How to get a set of keys in a two-dimensional array in PHP (high-performance search)_PHP tutorial

WBOY
Release: 2016-07-13 10:28:54
Original
1043 people have browsed it

分享下PHP 获取二维数组中某个key的集合的方法。

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

代码:

<span>$user</span> = <span>array</span><span>( 
</span>0 => <span>array</span><span>( 
</span>'id' => 1, 
'name' => '张三', 
'email' => 'zhangsan@sina.com',<span> 
)</span>, 
1 => <span>array</span><span>( 
</span>'id' => 2, 
'name' => '李四', 
'email' => 'lisi@163.com',<span> 
)</span>, 
2 => <span>array</span><span>( 
</span>'id' => 5, 
'name' => '王五', 
'email' => '10000@qq.com',<span> 
)</span>, 
......<span> 
);</span>
Copy after login

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

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

1)获取索引"id"的集合,并且保存为一个一位数组,即得到 array(1,2,5)
如果是以前我的写法就是直接 foreach,然后 array_push 一个个的往一个数组变量里塞。这样也能实现。
但这样的写法很影响性能,因为使用 PHP 原生的函数肯定比循环效率高。

代码:

<span>$ids</span> = <span>array</span><span>(); 
</span><span>$ids</span> = <span>array_map</span>('array_shift', <span>$user</span>);
Copy after login

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

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

代码:

<span>$ids</span> = <span>array</span><span>(); 
</span><span>$ids</span> = array_column(<span>$user</span>, 'id');
Copy after login

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

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

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

代码:

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

得到结果: 

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/780023.htmlTechArticle分享下PHP 获取二维数组中某个key的集合的方法。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码: $user = array ( 0 = array...
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