如何根据另一个数组键的值创建数组?

时间:2010-12-29 02:03:28

标签: php array-filter

我有一个数组如下:

$arr1 = array(
  0 => array(
    'name' => 'tom',
    'age' => 22
  ),
  1 => array(
    'name' => 'nick',
    'age' => 18
  )
);

但是我想从它创建一个由所有名称组成的数组,因此它将成为:

$arr2 = array('tom', 'nick');

我看过array_filter(),但这不会起作用,因为这是一个多维数组!

问题

如何使用另一个多维数组中特定键(name)的值创建数组?

4 个答案:

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

使用array_coulmn

可以更简单的方式完成此操作
$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');