You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP初学者求教:如何用foreach循环去除多维数组重复项及print_r用法

PHP多维数组去重与循环输出问题解答

嘿,作为PHP初学者碰到数组去重和循环里的输出问题太正常了,我来一步步帮你理清楚~

一、用foreach循环去除多维数组中的重复项

多维数组没法直接用array_unique()(这个函数只适合一维数组),用foreach的核心思路是:给每个子数组生成一个唯一标识(比如转成字符串),通过这个标识判断是否重复,进而筛选出不重复的元素。

举个实用的例子:

// 示例多维数组(包含重复项)
$multiArray = [
    ['id' => 1, 'skill' => 'PHP'],
    ['id' => 2, 'skill' => 'MySQL'],
    ['id' => 1, 'skill' => 'PHP'], // 重复的子数组
    ['id' => 3, 'skill' => 'JavaScript']
];

$tempKeys = []; // 存子数组转成的唯一标识,用来判断重复
$uniqueArray = []; // 最终去重后的数组

foreach ($multiArray as $item) {
    // 把每个子数组转成JSON字符串作为唯一键(也可以用serialize,JSON更易读)
    $uniqueKey = json_encode($item);
    // 如果这个标识没出现过,就保留当前子数组
    if (!in_array($uniqueKey, $tempKeys)) {
        $tempKeys[] = $uniqueKey;
        $uniqueArray[] = $item;
    }
}

// 输出去重后的数组
print_r($uniqueArray);

运行后会得到没有重复子数组的结果,原理就是利用字符串的唯一性来判断子数组是否重复。

二、你的代码片段中print_r该填什么?

先看你这段代码的小问题:$nodecontainer {"id"}的语法不对,应该写成$nodecontainer['id']或者$nodecontainer["id"]。

再看逻辑:你现在的代码每次循环都会把$nodecontainer['id']覆盖成当前行的left_skill,然后遍历这个只有一个元素的数组,每次print_r($nodecontainer)都会输出当前的['id' => 当前left_skill]——这显然不是收集所有不重复项的逻辑。

如果你是想收集所有不重复的left_skill并最终输出,应该调整代码逻辑,比如:

// 先初始化空数组用来存不重复的技能
$nodecontainer = [];

while($row = mysqli_fetch_assoc($result3)) {
    $leftSkill = $row['left_skill'];
    // 检查当前技能是否已经在数组里,不在就添加
    if (!in_array($leftSkill, $nodecontainer)) {
        $nodecontainer[] = $leftSkill;
    }
}

// 循环结束后,打印去重后的所有技能
print_r($nodecontainer);

如果一定要在foreach里输出,比如每次添加新技能后打印当前的数组状态,可以这样写:

$nodecontainer = [];

while($row = mysqli_fetch_assoc($result3)) {
    $leftSkill = $row['left_skill'];
    if (!in_array($leftSkill, $nodecontainer)) {
        $nodecontainer[] = $leftSkill;
        
        // 遍历当前数组,打印每个元素(可选)
        foreach ($nodecontainer as $index => $skill) {
            echo "索引: $index, 技能: $skill<br>";
        }
        
        // 或者直接打印整个当前数组
        print_r($nodecontainer);
    }
}

这样每次添加新的不重复技能时,都会输出当前的数组内容。

内容的提问来源于stack exchange,提问作者Best Jeanist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:02:24