不知道之前是否询问过此问题,经过大量搜索后无法找到。
我的数组看起来像这样,
array(3) {
[0]=>
array(2) {
[0]=>
array(1) {
["userId"]=>
string(3) "421"
}
[1]=>
array(1) {
["userId"]=>
string(3) "329"
}
}
[1]=>
array(1) {
[0]=>
array(1) {
["userId"]=>
string(3) "329"
}
}
[4]=>
array(2) {
[0]=>
array(1) {
["userId"]=>
string(3) "329"
}
[1]=>
array(1) {
["userId"]=>
string(3) "421"
}
}
}
我想要的是,
array(1) {
[0]=>
array(5) {
[0]=>
array(1) {
["userId"]=>
string(3) "421"
}
[1]=>
array(1) {
["userId"]=>
string(3) "329"
}
[2]=>
array(1) {
["userId"]=>
string(3) "329"
}
[3]=>
array(1) {
["userId"]=>
string(3) "329"
}
[4]=>
array(1) {
["userId"]=>
string(3) "421"
}
}
}
我尝试使用array_merge
,array_combine
和许多foreach()
循环。但是没有获得所需输出的运气。
不知道该怎么做。请帮忙。
答案 0 :(得分:1)
您可以像这样扁平化阵列:
$arr = array(array(['user' => 1], ['user' => 2]), ['user' => 3]);
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr));
foreach($iterator as $val) {
$flattened_arr[0][] = $val;
}
var_dump($flattened_arr);
更新:如果您不想使用RecursiveIteratorIterator
,您也可以使用array_walk_recursive()
执行此操作:
$non_flat_arr = array(array(['user' => 1], ['user' => 2]), ['user' => 3]);
$objTmp = (object) array('flat_arr' => array());
array_walk_recursive($non_flat_arr, create_function('&$v, $k, &$t', '$t->flat_arr[] = $v;'), $objTmp);
var_dump([ 0 => $objTmp->flat_arr]);
这将输出为:
array:1 [
0 => array:3 [
0 => 1
1 => 2
2 => 3
]
]
希望这有帮助!