Php 将多维数组缩减为一个数组
简单地说,我需要帮助,如何使多维数组成为一个数组,而不改变关键数组 其中:Php 将多维数组缩减为一个数组,php,multidimensional-array,Php,Multidimensional Array,简单地说,我需要帮助,如何使多维数组成为一个数组,而不改变关键数组 其中: Array ( [0] => Array ( [554] => a ) [1] => Array ( [561] => b ) [2] => Array
Array
(
[0] => Array
(
[554] => a
)
[1] => Array
(
[561] => b
)
[2] => Array
(
[574] => c
)
)
其中:
Array
(
[554] => a
[561] => b
[574] => c
)
这应该适合您:
$array = array(
array(554 => "a"),
array(561 => "b"),
array(574 => "c")
);
function getL2Keys($array) {
foreach($array as $sub)
$result[] = array_keys($sub);
return call_user_func_array('array_merge', array_values($result));
}
$array = array_combine(getL2Keys($array), call_user_func_array('array_merge', array_values($array)));
print_r($array);
输出:
Array
(
[554] => a
[561] => b
[574] => c
)
我喜欢使用
array\u walk\u recursive
解决以下问题:
function flatten($array)
{
$temp=array();
array_walk_recursive($array, function($item, $key) use (&$temp) {
$temp[$key]=$item;
});
return $temp;
}
$a = array(
array(
564=>'a',
),
array(
561=>'b',
array(
562=>'d',
array(
563=>'e',
),
),
),
array(
574=>'c',
),
);
$b = flatten($a);
print_r($b);
这是我的输出:
Array
(
[564] => a
[561] => b
[562] => d
[563] => e
[574] => c
)
我将不得不发布这篇文章,因为当前所有其他答案都过于复杂:
$result = array_reduce($array, function ($result, $array) { return $result + $array; }, array());
这就是所需的一切。我希望我能帮助您,首先不要误解,您必须进一步调查,在寻求解决方案之前,我强烈建议您访问www.php.net,搜索数组文档,足够多的人说您正在寻找遍历数组的方法,实际上,您正在寻找“foreach”语句,在这里,我提供了一个简单的解决方案,您可以稍后将其转换为函数:
<?php
$original = array
(
0 => array(554 => 'a'),
1 => array(561 => 'b'),
2 => array(574 => 'c'),
);
/*$result = Array
(
[554] => a
[561] => b
[574] => c
);*/
$result = array();
foreach ($original as $sub_array) {
//this help us read first level array
foreach ($sub_array as $subArrayKey=>$subArray) {
// this help us read second level array
$result[$subArrayKey] = $subArray;
}
}
echo '<pre>';
print_r($result);
echo '</pre>';
?>
欢迎来到SO。你能描述一下你的挑战是什么吗?现在,你的问题还不是很好。如果你想得到一些帮助,有一个好的格式是很重要的。如有必要,搜索一些有很多投票的问题。你可以学习如何写更好的问题。:)O对不起,我想我问得对,如果这个问题没有用,那么我如何删除它?它是有效的,我想我必须使用array\u reduce,谢谢。也许你先读了这个问题:在你的答案中,D键丢失了!好吧,那么,给你一个更好的解决方案。您只需在数组上迭代+
操作符。