我有一个数组如下:
$arr1 = array(
0 => array(
'name' => 'tom',
'age' => 22
),
1 => array(
'name' => 'nick',
'age' => 18
)
);
但是我想从它创建一个由所有名称组成的数组,因此它将成为:
$arr2 = array('tom', 'nick');
我看过array_filter()
,但这不会起作用,因为这是一个多维数组!
如何使用另一个多维数组中特定键(name
)的值创建数组?
答案 0 :(得分:32)
较新版本的PHP允许array_map()
使用函数表达式而不是函数名称:
$arr2 = array_map(function($person) {
return $person['name'];
}, $arr1);
但是如果你使用PHP< 5.3,使用简单的循环要容易得多,因为array_map()
需要为这个简单的操作定义一个(可能是全局的)函数。
$arr2 = array();
foreach ($arr1 as $person) {
$arr2[] = $person['name'];
}
// $arr2 now contains all names
答案 1 :(得分:11)
$arr2= array_column($arr1, 'name');
print_r($arr2); //Array ( [0] => tom [1] => nick )
array_column用于获取子数组的列。
答案 2 :(得分:3)
$array = array(0 => array('name' => 'tom', 'age' => 22), 1 => array('name' => 'nick', 'age' => 18));
foreach($array as $arr => $a){
$names[] = $array[$arr]["name"];
}
print_r($names); //Array ( [0] => tom [1] => nick )
答案 3 :(得分:0)
只需使用array_pluck
:
$arr2 = array_pluck($arr1 , 'name');