获取没有foreach循环的数组值

iOi*_*iOi 8 php arrays foreach

在这个例子中,有没有办法在不使用foreach循环的情况下获取一个数组中的所有值?

<?php 
$foo = array(["type"=>"a"], ["type"=>"b"], ["type"=>"c"]);
Run Code Online (Sandbox Code Playgroud)

我需要的输出是 array("a", "b", "c")

我可以用这样的东西来完成它

$stack = [];

foreach($foo as $value){
  $stack[] = $value["type"];
}

var_dump($stack); 
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻找不涉及使用foreach循环的选项.

Ama*_*ali 16

如果您使用的是PHP 5.5+,则可以使用array_column(),如下所示:

$result = array_column($foo, 'type');
Run Code Online (Sandbox Code Playgroud)

如果需要带有数字索引的数组,请使用:

$result = array_values(array_column($foo, 'type'));
Run Code Online (Sandbox Code Playgroud)

如果您使用的是以前的PHP版本并且此刻无法升级,则可以使用同一作者编写的Userland实现array_column()功能.

或者,您也可以使用array_map().除了没有明确显示循环之外,这基本上与循环相同.

$result = array_map(function($arr) {
   return $arr['type'];
}, $foo);
Run Code Online (Sandbox Code Playgroud)


Alm*_* Do 5

要么array_column()用于 PHP 5.5:

$foo = array(["type"=>"a"], ["type"=>"b"], ["type"=>"c"]);
$result = array_column($foo, 'type');
Run Code Online (Sandbox Code Playgroud)

array_map()用于以前的版本:

$result = array_map(function($x)
{
   return $x['type'];
}, $foo);
Run Code Online (Sandbox Code Playgroud)

注意:循环仍然会执行,但它会隐藏在上述函数中。