php - 为什么我不能在 foreach 循环中将元素插入子数组?

标签 php arrays foreach array-push indexed

我正在尝试了解有关 for each 循环中的数组的一些内容,这对许多人来说可能是显而易见的。

当我遍历多维数组时,我试图找到没有第三个元素的子数组。如果它们没有第三个元素,我想向该子数组添加一个具有特定值的第三个元素。

$testArray = array (
    array("Green", "Yellow", "Blue"),
    array("Brown", "Silver"),
    array("Orange", "Pink", "Black"),
);

当我使用 foreach 循环时:

foreach ( $testArray as $key => $array ) {
    if (count($array) == '2') {
        $array[] = "None";
    };
}

没有错误被抛出但什么也没有发生。当我使用 for each 循环时:

foreach ( $testArray as $key => $array ) {
    if (count($array) == '2') {
        $testArray[$key][] = "None";
    };
}

它按预期工作。

抱歉序言很长,我的问题是:

为什么这两个 foreach 循环不做同样的事情?谢谢!

最佳答案

因为您需要“通过引用”访问 $testArray 条目

foreach ( $testArray as &$array ) {
    if (count($array) == 2) {
        $array[] = "None";
    };
}
unset($array);

关于php - 为什么我不能在 foreach 循环中将元素插入子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17345745/

相关文章:

java - 速度不解析 foreach 循环中的变量

php - 如何检查网页是否存在。 jQuery 和/或 PHP

php - 使用ajax和jquery将数组发送到codeigniter(php) Controller ,并在现有加载页面(在任何div中)上加载页面

php - 从两个表中选择数据到两个数组中

php - 如何根据第一个表匹配获取第二个和第三个表的数据

java - 你好,我想做一个程序,它存储名称并在写入“stop”结束时停止,并且程序显示存储在其中的名称

php - 排除 foreach 表中的列而不丢失数据

c++ - 哪个对数组清零最快?

php - 如何使用php将数组值存储在表的不同列中

javascript - JavaScript 中的 forEach