合并数组 php 中键的所有值
merge all values of keys in array php
不知道这个问题以前有没有人问过,找了很多都找不到
我的数组看起来像这样,
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()
循环。但没有得到所需输出的运气。
不知道该怎么做。请帮忙。
你可以像这样展平你的数组:
$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
]
]
希望对您有所帮助!
不知道这个问题以前有没有人问过,找了很多都找不到
我的数组看起来像这样,
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()
循环。但没有得到所需输出的运气。
不知道该怎么做。请帮忙。
你可以像这样展平你的数组:
$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
]
]
希望对您有所帮助!