获取内部数组键的数组值[重复]
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
【讨论】:
以上是关于获取内部数组键的数组值[重复]的主要内容,如果未能解决你的问题,请参考以下文章