如何获得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);
你不应该依靠这个。 🙂