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)
要么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)
注意:循环仍然会执行,但它会隐藏在上述函数中。