加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 13:38:49 所属栏目:PHP教程 来源:网络整理
导读:我有一个很基本的问题,但我被困住了.我对 PHP很新,我有一个像这样的数组: $array = array( 'one' = 1,'two' = array('key1' = 'val1','key2' = 'val2'),'three' = array('key1' = 'val1','four' = array('key1' = 'val1','key2' = 'val2')); 并且对于数组中
我有一个很基本的问题,但我被困住了.我对 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读