如何获得multidimensional array中没有循环的特定“键”的数组

就像我以前的问题一样 ,这个问题是关于在PHP中学习新东西的。

假设我有以下multidimensional array(从MySQL或服务中检索):

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

我们可以在一个“ 内置的 ”PHP函数调用中获得一个id数组吗? 或一行代码?
我意识到传统的循环和获得价值,但我不需要这个:

 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); 

之前(技术上讲,PHP 4.0.6+) ,你必须创build一个匿名函数与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);

@ PHPhag的解决scheme将从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)。 在这里查看源代码

如果id是数组中的第一个键,则会执行:

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

你不应该依靠这个。 🙂