【问题标题】: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 这不是高优先级的事情,但我只是想知道是的。

标签: php arrays


【解决方案1】:

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

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

【讨论】:

  • 你是在循环内部还是在循环外部?
  • 它是而不是循环
  • 这很难理解,但是干净多了,谢谢!
  • 不就是和:stackoverflow.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 2020-01-06
    • 1970-01-01
    • 2017-06-05
    • 2013-04-04
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多