【问题标题】:push an element to each array in a multidimentional array in php?将一个元素推送到php中多维数组中的每个数组?
【发布时间】:2010-12-06 09:40:28
【问题描述】:

这是我的数组

$myArr  = array(array('one', 'two'), array('one', 'two'));

我想为 $myArr 内的每个数组添加一个元素。我不想遍历内部的每个数组并添加该元素。有没有更快的方法来使用 array_map 或 array_walk.. 最好是使用一行代码?

结果数组应该是这样的

$myArr  = array(array('one', 'two','three'), array('one', 'two','three'));

非常感谢

知道了,感谢@strager

$myvar = 'Three';

$myArr = array_map(function ($subarray) {  global $myvar; $subarray[] = $myvar;   return $subarray;}, $myArr);

【问题讨论】:

    标签: php multidimensional-array


    【解决方案1】:

    与array_walk:

    array_walk($myArr, create_function('&$subarray', '$subarray[] = "three";'));
    

    与array_map:

    $myArr = array_map(create_function('$subarray', '$subarray[] = "three"; return $subarray;'), $myArr);
    

    使用匿名函数array_map(未经测试;我无权访问 PHP5.3):

    $myArr = array_map(function ($subarray) {
        $subarray[] = "three";
        return $subarray;
    }, $myArr);
    

    当然,更好的解决方案(对于 PHP

    function pushToEndOfSubarrays($array, $item) {
        $ret = array();
    
        foreach ($array as $key => $subarray) {
            $subarray[] = $item;
            $ret[$key] = $subarray;
        }
    
        return $ret;
    }
    
    $myArr = pushToEndOfSubarrays($myArr, 'three');
    

    【讨论】:

    • 我正在使用:array_walk($myArr, create_function('&$subarray', '$subarray[] = "three";'));如何传递我的元素变量以添加到 create_function 中?它是一个动态值,而不是像“三”这样的文本
    • @Naresh,这就是事情变得棘手的地方。只需在我的回答中使用最后两个建议之一即可。
    【解决方案2】:

    您可以使用函数 array_push() 将数组推入数组

    int array_push ( array &$array , mixed $var [, mixed $... ] );
    

    这可能会帮助您满足您的要求。

    谢谢。

    【讨论】:

    • 这个还不需要循环吗?否则它只会将值附加到父数组的末尾而不是子数组的末尾。
    • 提问者想要将一个元素推送到$myArr 内的每个数组。他们似乎不想将新数组推送到$myArr。
    • 感谢您的回复,但我只想向我的主数组中的所有数组添加一个元素.. 不将元素推入数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2013-01-21
    • 2012-01-16
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多