获取内部数组键的数组值

时间:2016-07-27 20:12:17

标签: php arrays

我有一个这样的数组:

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;
    }
} 

有没有更好的方法来做这个而不是循环两个数组?

2 个答案:

答案 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; });

http://php.net/manual/en/function.array-walk-recursive.php