我想在php中将子数组添加到一个数组中[重复]

Posted

技术标签:

【中文标题】我想在php中将子数组添加到一个数组中[重复]【英文标题】:I want to add sub arrays to one single array in php [duplicate] 【发布时间】:2013-02-03 19:10:44 【问题描述】:

我有这样的数组............

Array
(
    [0] => Array
        (
            [0] => rose
            [1] => monkey
            [2] => donkey
        )

    [1] => Array
        (
            [0] => daisy
            [1] => monkey
            [2] => donkey
        )

    [2] => Array
        (
            [0] => orchid
            [1] => monkey
            [2] => donkey
        )

)

我也想要这样.........

Array
(
    [0] => rose
    [1] => monkey
    [2] => donkey
    [3] => daisy
    [4] => monkey
    [5] => donkey
    [6] => orchid
    [7] => monkey
    [8] => donkey
)

....我使用了数组合并,但它不起作用,因为我的数组动态生成并且每次显示不同的数组。 问题是我不能在 array_merge() 函数中动态传递数组。它只接受数组的手动条目,不接受任何其他变量。函数只接受数组。

它是这样工作的......

$total_data = array_merge($data[0],$data[1],$data[2]);

因为每次它动态生成不同数量的数组,所以 我必须这样使用....

$data_array = $data[0],$data[1],$data[2];

 $total_data = array_merge($data_array);

但它显示错误“array_merge() [function.array-merge]: Argument #1 is not an array”......

【问题讨论】:

你为什么不使用 array_push 创建一个新数组作为你的要求。 php.net/manual/en/function.array-push.php array_push($output, ...$input); 【参考方案1】:

试试这个:

$array  = your array

$result = call_user_func_array('array_merge', $array);

echo "<pre>";
print_r($result);

或者试试这个:

function array_flatten($array) 

   $return = array();
   foreach ($array as $key => $value) 
       if (is_array($value)) $return = array_merge($return, array_flatten($value));
       else $return[$key] = $value;
   
   return $return;



$array  = Your array

$result = array_flatten($array);

echo "<pre>";
print_r($result);

【讨论】:

这是这个问题的正确答案,必须经历 3 个问题和错误的答案才能意识到这一点,谢谢。 您的第一个答案不适用于多维数组。 3v4l.org/tY8vD array_merge 解决方案是展平 2 级数组的绝妙方法 但是超过 100、200、500 的多维数组的嵌套级别如何?危险代码!【参考方案2】:

试试这个.....

       $result = array();
        foreach($data  as $dat)

          
                foreach($dat as $d) 

                 
                   $result[] = $d;

                 

           

【讨论】:

foreach ($data as $arr) foreach ($arr as $val) $result[] = $val; 真的不需要这么复杂的数组迭代... 感谢您的评论......

以上是关于我想在php中将子数组添加到一个数组中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

返回一个整数数组最大子数的和

返回一个整数数组最大子数的和

在jQuery中将元素添加到二维数组[重复]

如何在php中将所有键值合并到一个数组中[重复]

在VBScript中将项目添加到数组

返回一个整数数组最大子数的和