PHP 获取二维数组中某个key的聚合

WBOY
Release: 2016-06-13 11:53:57
Original
1360 people have browsed it

PHP 获取二维数组中某个key的集合

本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。

具体是这样的,如下一个二维数组,是从库中读取出来的。

代码清单:

$user = array(    0 => array(        'id'    => 1,        'name'  => '张三',        'email' => [email protected]',    ),    1 => array(        'id'    => 2,        'name'  => '李四',        'email' => [email protected]',    ),    2 => array(        'id'    => 5,        'name'  => '王五',        'email' => [email protected]',    ),    ......);
Copy after login

上面的数组格式,主要大家玩过 PHP+MYSQL,就肯定非常熟悉了。

那么,现在有这样的两个需求:

1)获取索引"id"的集合,并且保存为一个一位数组,即得到 array(1,2,5)

不知道各位朋友会怎么写呢?

如果是以前我的写法就是直接 foreach,然后 array_push 一个个的往一个数组变量里塞。这样也能实现。但这样的写法很影响性能,因为使用 PHP 原生的函数肯定比循环效率高。

代码清单:

$ids = array();$ids = array_map('array_shift', $user);
Copy after login

如上代码就可以得到我们想要的结果了,关于函数的使用想看手册。

其实这里面还有一种方案,使用 array_column 函数,不过此函数需要 PHP 版本要求,(PHP 5 >= 5.5.0)

代码清单:

$ids = array();$ids = array_column($user, 'id');
Copy after login

这样的话,效率肯定会更高了。


2)获取索引"name"的集合,并且保存为一个一位数组,即得到 array('张三','李四',‘王五’)

按照,我以往的写法,还是一样的foreach,然后 array_push 一个个的往一个数组变量里塞。请看高效率的代码清单。

代码清单:

$names = array();$names = array_reduce($user, create_function('$v,$w', '$v[$w["id"]]=$w["name"];return $v;'));
Copy after login

得到结果:

array(    1 => '张三',    2 => '李四',    5 => '王五',);
Copy after login

经常 foreach 的童鞋,赶快更正吧!

本文来自CSDN,转载请注明出处!http://blog.csdn.net/liruxing1715/article/details/22925575

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template