我有一个这样的数组:
array(2) {
[0]=>
array(1) {
[0]=>
object(Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter)#13 (2) {
["name":"Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter":private]=>
string(2) "name1"
["value":"Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter":private]=>
string(2) "30"
}
}
[1]=>
array(2) {
[0]=>
object(Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter)#12 (2) {
["name":"Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter":private]=>
string(2) "name2"
["value":"Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter":private]=>
string(6) "289213"
}
[1]=>
object(Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter)#15 (2) {
["name":"Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter":private]=>
string(6) "name3"
["value":"Bas\WWW\Router\Route\URIs\URI\Parameters\Parameter\Parameter":private]=>
string(5) "00123"
}
}
}
我想检索其中的所有对象,它们是内部数组键的值。
我的方法是循环第一个外部值,然后循环内部值并将它们放在一个单独的数组中。
$a = [];
foreach ($parameters as $parameter) {
foreach ($parameter as $data) {
$a[] = $data;
}
}
有没有更好的方法来做这个而不是循环两个数组?
答案 0 :(得分:3)
简单的解决方案是合并你的sub_arrays,将你的数组视为array_merge
的参数列表:
$a = call_user_func_array('array_merge', $parameters);
答案 1 :(得分:2)
使用array_walk_recursive
函数的简单解决方案:
$result = [];
array_walk_recursive($parameters, function($v) use(&$result){ $result[] = $v; });