Как получить массив определенного «ключа» в многомерном массиве без цикла

Предположим, у меня есть следующий многомерный массив (полученный из MySQL или службы):

array( array( [id] => xxx, [name] => blah ), array( [id] => yyy, [name] => blahblah ), array( [id] => zzz, [name] => blahblahblah ), ) 

Можем ли мы получить массив id s в одном « встроенном » вызове функции php? или одну строку кода?
Я знаю о традиционном цикле и получаю значение, но мне это не нужно:

 foreach($users as $user) { $ids[] = $user['id']; } print_r($ids); 

Возможно, некоторые array_map() и call_user_func_array() могут делать магию.

Начиная с php 5.5, вы можете использовать array_column :

 $ids = array_column($users, 'id'); 

Начиная с php 5.3, вы можете использовать array_map с анонимной функцией, например:

 $ids = array_map(function ($ar) {return $ar['id'];}, $users); 

Прежде чем (Technically php 4.0.6+) , вы должны создать анонимную функцию с помощью create_function :

 $ids = array_map(create_function('$ar', 'return $ar["id"];'), $users); 

PHP 5.5+

Начиная с PHP5.5 + у вас есть array_column (), доступный для вас, что делает все из них устаревшими.

PHP 5.3+

$ids = array_map(function ($ar) {return $ar['id'];}, $users);

Решение @phihag будет работать безупречно в PHP, начиная с PHP 5.3.0, если вам нужна поддержка до этого, вам нужно будет скопировать этот файл wp_list_pluck.

PHP <5.3

WordPress 3.1+

В WordPress есть функция wp_list_pluck. Если вы используете WordPress, который решает вашу проблему.

PHP <5.3

Если вы не используете WordPress , так как код является открытым исходным кодом, вы можете скопировать код в свой проект (и переименовать функцию в нечто, что вам больше нравится, например array_pick). Просмотр источника здесь

Если id является первым ключом в массиве, это будет делать:

 $ids = array_map('current', $users); 

Однако вы не должны полагаться на это. 🙂