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版本要求,(PHP5>=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=>'王五', );
经常foreach的童鞋,赶快更正吧!