在这个例子中,有没有办法在不使用foreach循环的情况下获取一个数组中的所有值?
<?php
$foo = array(["type"=>"a"], ["type"=>"b"], ["type"=>"c"]);
我需要的输出是array("a", "b", "c")
我可以用这样的东西来实现它
$stack = [];
foreach($foo as $value){
$stack[] = $value["type"];
}
var_dump($stack);
但是,我正在寻找不涉及使用foreach循环的选项。
答案 0 :(得分:14)
如果您使用的是PHP 5.5+,则可以使用array_column()
,如下所示:
$result = array_column($foo, 'type');
如果您想要一个带数字索引的数组,请使用:
$result = array_values(array_column($foo, 'type'));
如果您使用的是以前的PHP版本,目前无法升级,则可以使用同一作者编写的Userland implementation of array_column()
函数。
或者,您也可以使用array_map()
。这与循环基本相同,只是没有明确显示循环。
$result = array_map(function($arr) {
return $arr['type'];
}, $foo);
答案 1 :(得分:4)
对PHP 5.5使用array_column()
:
$foo = array(["type"=>"a"], ["type"=>"b"], ["type"=>"c"]);
$result = array_column($foo, 'type');
或者对以前的版本使用array_map()
:
$result = array_map(function($x)
{
return $x['type'];
}, $foo);
注意:循环仍将执行,但它将隐藏在上述功能中。