获取没有foreach循环的数组值

时间:2014-03-31 11:35:54

标签: php arrays foreach

在这个例子中,有没有办法在不使用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循环的选项。

2 个答案:

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

注意:循环仍将执行,但它将隐藏在上述功能中。