我试图实现一些我天真地相信会很简单:展平一个多维数组(可能有很多嵌套级别),但仍然有阵列作为结果。理想情况下,我正在寻找一个可以迭代10个嵌套级别的函数,并且可以处理不同的键集(不一定总是相同)。把一个多维的PHP数组变成一个二维数组
总之,把这个:
Array
(
[0] => Array
(
[0] => Array
(
[index] => -1
[qty] => 77
[id] => 7
)
[1] => Array
(
[index] => -1
[qty] => 83
[id] => 8
)
)
[1] => Array
(
[0] => Array
(
[index] => -1
[qty] => 75
[id] => 13
)
[1] => Array
(
[index] => -1
[qty] => 60
[id] => 14
[msr] => g
)
)
[2] => Array
(
[index] => -1
[qty] => 10
[id] => 12
)
)
进入这个:
Array
(
[0] => Array
(
[index] => -1
[qty] => 77
[id] => 7
)
[1] => Array
(
[index] => -1
[qty] => 83
[id] => 8
)
[2] => Array
(
[index] => -1
[qty] => 75
[id] => 13
)
[3] => Array
(
[index] => -1
[qty] => 60
[id] => 14
[msr] => g
)
[4] => Array
(
[index] => -1
[qty] => 10
[id] => 12
)
)
这是我和思考的工作,但我最终没有密钥信息的扁平阵列(如果我需要密钥,则每次迭代都会覆盖之前的值,最后我只用最后一个数组):
function flatten_multi_array(array $array){
$ret_array = array();
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $value) {
$ret_array[] = $value;
}
return $ret_array;
}
感谢您的回复。但这并没有真正奏效。我得到一个平坦的数组,并失去所有关键信息... –
当然,它确实合并子数组,不保存密钥。如果你需要密钥,那么只需用$ out = array(...,“key”=> $ k)替换$ out = $ v;从描述来看,不清楚这两个关键字是唯一的还是应该保留的。 – jancha
我已经有一个功能,做了同样的事情(见编辑),如果我想有钥匙,因为它没有第二维,所有的值将被覆盖。在您的示例中为 –