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

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

代码:

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

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

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

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

代码:

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

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

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

代码:

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

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

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

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

代码:

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

得到结果:

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

PHP 如何获取二维数组中某个key的集合(高性能查找)相关推荐

  1. php 提取二维数组的key,PHP 获取二维数组中某个key的集合

    一.CSRF 即Cross-site request forgery跨站请求伪造,是指有人冒充你的身份进行一些恶意操作. 比如你登录了网站A,网站A在你的电脑设置了cookie用以标识身份和状态,然后 ...

  2. PHP获取二维数组中某一列的值集合

    PHP还是比较常用的,于是我研究了一下PHP二维数组,下面通过本文给大家介绍PHP获取二维数组中某一列的值集合,对php数组二维数组的值相关知识感兴趣的朋友一起学习吧 PHP还是比较常用的,于是我研究 ...

  3. php去掉二维数组中某key的值

    eg:二维数据 $arr = array(array('game_id'=> 111, 'login_type' => 3, 'num' => 339),array('game_id ...

  4. 4.编程打印一个二维数组中所有元素的和,并打印最大值,最小值(以及它们所在的行号和列号)

    /*晕呀,竟然做了一天,还不知道怎样做出来的.....*/ package HomeWork; import java.util.Arrays; /*4.编程打印一个二维数组中所有元素的和,并打印最大 ...

  5. Java二维数组详解:二维数组的声明和初始化,以及获取二维数组的值

    为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来.二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列.下面 ...

  6. VC++中从txt文本中读取数据并且存到二维数组中

    这几天因为在做作业,所以不仅会想到这一类有关的问题.现在我需要实现的是讲txt文件的数据读取出来并且存储到一个二维数组中.,首先为了对待什么样的矩阵我们都可以读取,我们就要设置一个动态的矩阵,这样当我 ...

  7. php某列为键数组为值,PHP 将二维数组中某列值作为数组的键名 -- 超实用

    有时候,想通过数组的中某字段值, 然后再在二维数组中获取存在该字段值的数组: 一般能想到的就是foreach 遍历比较一下跟该字段值一样,就获取到想要的数组,如下: //测试二维数组 $arr =ar ...

  8. JAVA实现二维数组中的查找(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  9. asp 判断数组等于_剑指Offer(牛客版)--面试题4:二维数组中的查找

    SCDN博客:https://blog.csdn.net/weixin_41923658 微信公众号:「汤姆鱼」 -------------------------------------手动分割线- ...

最新文章

  1. 深入理解javascript中的立即执行函数(function(){…})()
  2. JavaScript语言特点
  3. 旷世科技算法实习面经
  4. python3.4.4 配置opencv3.1 解决pip版本不够的问题
  5. 腾讯安全Blade团队亮相CanSecWest峰会
  6. jzoj3833-平坦的折线【模型转换,LIS】
  7. 一个能自动搜索源文件并自动推导的Makefile
  8. Shell 编程:Bash空格的那点事
  9. interllij IDEA2017快捷键风格修改为myEclipse快捷键风格
  10. autojs命令代码大全_各个主流品牌手机的命令代码大全,安卓工程模式的指令大全!...
  11. C++ Socket 编程
  12. 饿了么订单--快到碗里来
  13. java线程同步的作用_Java并发编程之线程同步
  14. python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学
  15. 一文精讲Wireshark的抓包和分析
  16. Iphone备份SHSH的方法步骤
  17. OAuth2通过token访问资源服务器
  18. Datawhale打卡第2次
  19. Odoo 继承对象增加属性,不显示protal o_affix_enabled 内容
  20. 浅淡深度学习的发机机——张量计算

热门文章

  1. java并发编程基础—生命周期与线程控制
  2. Jmeter Md5加密操作之-------BeanShell PreProcessor
  3. 代码和产品发布的几种方式
  4. androidinclude作用
  5. 上周热点回顾(7.1-7.7)
  6. 多行文本框限制输入字符长度(两种方法)
  7. go get 获取被墙依赖包解决方法
  8. 解决虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题(一般出现在win7 旗舰版)
  9. IntelliJ IDEA导入JDK出现The selected directory is not a valid home for JDK问题的解决方法
  10. PHP输出中文乱码的解决方法