Как получить массив конкретного "ключа" в многомерном массиве без зацикливания
предположим, что у меня есть следующий многомерный массив (полученный из 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()
может сделать волшебство.
3 ответа:
начиная с php 5.5, вы можете использовать
array_column
:$ids = array_column($users, 'id');
начиная с PHP 5.3, вы можете использовать
array_map
С анонимной функцией, как это:$ids = array_map(function ($ar) {return $ar['id'];}, $users);
до(технически 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 Wordpress 3.1+
в Wordpress есть функция под названием wp_list_pluck Если вы используете WordPress, который решает вашу проблему.
PHP если вы не используете Wordpress, так как код является открытым исходным кодом, вы можете скопировать вставить код в свой проект (и переименовать функцию в то, что вы предпочитаете, например array_pick). посмотреть здесь Источник