我想在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.phparray_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中将子数组添加到一个数组中[重复]的主要内容,如果未能解决你的问题,请参考以下文章