php将值插入到使用foreach的数组中

前端之家收集整理的这篇文章主要介绍了php将值插入到使用foreach的数组中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个很基本的问题,但我被困住了.我对 PHP很新,我有一个像这样的数组:
$array = array(
    'one' => 1,'two' => array('key1' => 'val1','key2' => 'val2'),'three' => array('key1' => 'val1','four' => array('key1' => 'val1','key2' => 'val2')
);

并且对于数组中的每个数组(即’二,’三’和’四’),我想插入’key3’=> ‘val3’转换成这些数组.

我试过这个:

foreach($array as $item) {
    if (gettype($item) == "array") {
        $item['key3'] = 'val3';
    }
}

但它不行,我不知道为什么.在各地使用各种print_r,似乎插入’key3’=> ‘val3’成$item,如果我在循环中打印出来,但是原来的数组似乎没有改变.我也试过一个常规的循环,但也没有工作.

foreach与$item的副本一起工作,所以您不能修改foreach中的原始数组.解决这个问题的一个方法是使用&操作符.
foreach($array as &$item) {
    if (is_array($item)) {
        $item['key3'] = 'val3';
    }
}

另一个更优雅的方式是使用array_walk()

array_walk($array,function (&$v,$k) { 
    if (is_array($v)) {
        $v['key3'] = 'val3';
    }
});

这个例子将从PHP 5.3开始,其中介绍了Closures.

猜你在找的PHP相关文章