如何在没有循环的情况下在多维数组中获取特定"键"的数组

ifa*_*our 101 php

假设我有以下多维数组(从MySQL或服务中检索):

array(
    array(
        [id] => xxx,
        [name] => blah
    ),
    array(
        [id] => yyy,
        [name] => blahblah
    ),
    array(
        [id] => zzz,
        [name] => blahblahblah
    ),
)
Run Code Online (Sandbox Code Playgroud)

我们可以id在一个" 内置 "php函数调用中获取一个s 数组吗?还是一行代码?
我知道传统的循环并获得价值,但我不需要这样:

foreach($users as $user) {
    $ids[] = $user['id'];
}
print_r($ids);
Run Code Online (Sandbox Code Playgroud)

也许有些array_map()call_user_func_array()可以做的魔力.

phi*_*hag 238

从PHP 5.5开始,您可以使用array_column:

$ids = array_column($users, 'id');
Run Code Online (Sandbox Code Playgroud)

从php 5.3开始,您可以使用array_map匿名函数,如下所示:

$ids = array_map(function ($ar) {return $ar['id'];}, $users);
Run Code Online (Sandbox Code Playgroud)

之前(技术上是php 4.0.6+),您必须创建一个匿名函数create_function:

$ids = array_map(create_function('$ar', 'return $ar["id"];'), $users);
Run Code Online (Sandbox Code Playgroud)

  • @Angger然后你有一个不同的问题.你可以随意[问一下](http://stackoverflow.com/questions/ask),只要你详细提到你期望的行为,例如,如果输入为'['ball'=> [' golf'=> 7,'basket'=> 5,'soccer'=> 6],'shuttle'=> ['羽毛球'=> 1]]`. (2认同)

jus*_*ris 12

PHP 5.5+

从PHP5.5开始,你可以使用array_column(),这使得以下所有内容都过时了.

PHP 5.3+

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

@phihag的解决方案将从PHP 5.3.0开始在PHP中完美运行,如果在此之前需要支持,则需要复制该wp_list_pluck.

PHP <5.3

Wordpress 3.1+

在Wordpress中有一个名为wp_list_pluck的函数 如果您正在使用Wordpress来解决您的问题.

PHP <5.3

如果您不使用Wordpress,由于代码是开源的,您可以复制粘贴项目中的代码(并将函数重命名为您喜欢的函数,如array_pick).在这里查看来源