获取内部数组键的数组值[重复]

Posted

技术标签:

【中文标题】获取内部数组键的数组值[重复]【英文标题】:Getting array values of inner array keys [duplicate] 【发布时间】:2016-12-02 00:26:02 【问题描述】:

我有一个这样的数组:

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;
    
 

有没有更好的方法来代替循环两个数组?

【问题讨论】:

您真正想做的只是将二维数组展平为可以迭代的一维数组吗? @JeffLambert 这不是高优先级的事情,但我只是想知道是的。 【参考方案1】:

简单的解决方案是合并您的子数组,将您的数组视为array_merge 的参数列表:

$a = call_user_func_array('array_merge', $parameters);

【讨论】:

你是在循环内部还是在循环外部? 它是而不是循环 这很难理解,但是干净多了,谢谢! 不就是和:***.com/a/38561163一模一样吗?【参考方案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

【讨论】:

以上是关于获取内部数组键的数组值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDOStatement:获取一行,作为数组的键的第一列[重复]

PHP多维数组搜索并获取键的数组[重复]

根据值删除数组键的简单方法[重复]

获取地图键的数组[重复]

在具有特定键的特定值的数组中查找对象的索引[重复]

NodeJS通过键的值在数组中查找对象[重复]