web-dev-qa-db-ja.com

別の配列のキーの値から配列を作成するにはどうすればよいですか?

次のような配列があります。

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

ただし、すべての名前で構成される配列を作成したいので、次のようになります。

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

私はarray_filter()を見てきましたが、これは多次元配列なので機能しません!

質問

別の多次元配列から特定のキー(name)の値で配列を作成するにはどうすればよいですか?

20
newbtophp

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
_
33
jwueller

これは、 array_column を使用して、さらに簡単な方法で実行できます。

$arr2= array_column($arr1, 'name');

print_r($arr2); //Array ( [0] => tom [1] => nick )

array_columnは、サブ配列の列を取得するために使用されます。

11
JVT
$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

laravelを使用している場合は、単にarray_pluck

$arr2 = array_pluck($arr1 , 'name');
0
Usama