Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数据推送到另一个数组中存储的数组中_Php_Arrays_List - Fatal编程技术网

Php 将数据推送到另一个数组中存储的数组中

Php 将数据推送到另一个数组中存储的数组中,php,arrays,list,Php,Arrays,List,如何向另一个数组包含的数组添加值 在下面的示例代码中,我试图将字符串“yellow”添加到$arr存储的两个数组中,以形成[['blue',yellow'],['green','yellow']] 在第一个foreach循环中,单词yellow被成功地推送到包含的数组中,但是当我打印数组$key时可以看到该数组 当我在最后一个foreach循环中打印$arr时,我附加的黄色不见了 $arr = array(array("blue"),array("green")); fore

如何向另一个数组包含的数组添加值

在下面的示例代码中,我试图将字符串“yellow”添加到
$arr
存储的两个数组中,以形成
[['blue',yellow'],['green','yellow']]

在第一个foreach循环中,单词yellow被成功地推送到包含的数组中,但是当我打印数组$key时可以看到该数组

当我在最后一个foreach循环中打印$arr时,我附加的黄色不见了


    $arr = array(array("blue"),array("green"));

    foreach ($arr as $key)
    {
        array_push($key,"yellow");
        print_r($key);
    }
    foreach ($arr as $key)
    {
        print_r($key);
    }

    ?>

使用foreach上的参考,如so和$key保存修改:

PHP在foreach中复制变量,因此您的$key实际上与以前数组中的变量不同

从@开始:

&将数组的值作为引用传递,而不创建新的 变量的实例

所以,只要做:

$arr = array(array("blue"),array("green"));

foreach ($arr as &$value)
{
    $value[]='yellow';
    print_r($value);
}
foreach ($arr as $value)
{
    print_r($value);
}
这里没有关键的方法

$arr = [["blue"], ["green"]];
foreach ($arr as &$value)
       $value[]='yellow';        
print_r($arr);
以下是关键方法

$arr = [["blue"], ["green"]];
foreach ($arr as $key=>$value)
       $arr[$key][]='yellow';        
print_r($arr);
下面是另一种使用

这是同样的事情

所有示例的输出

Array
(
    [0] => Array
        (
            [0] => blue
            [1] => yellow
        )

    [1] => Array
        (
            [0] => green
            [1] => yellow
        )

)

最后是一些性能测试和

您也可以使用array\u map进行测试。例如,请参见下面的代码

$a = [["blue"],["green"]];

$b = array_map(function($n) {
    $n[] = "Yellow";
    return $n;
}, $a);

print_r($b);

希望这有帮助。

foreach($arr as&$key)
是的。编辑了我的答案。
Array
(
    [0] => Array
        (
            [0] => blue
            [1] => yellow
        )

    [1] => Array
        (
            [0] => green
            [1] => yellow
        )

)
$a = [["blue"],["green"]];

$b = array_map(function($n) {
    $n[] = "Yellow";
    return $n;
}, $a);

print_r($b);