靓点:简化操作,array_walk批处理,引用,内耗小。
应用场景:主要用来处理记录集(二维数组) 1、整合结果集(一维数组,如ids:[1,3,4,5],获奖用户名清单:['熊明','lijia','二郎神']) 2、组合键值对(一维数组,如标签:array('mysql'=>'url1','php'=>'url2']) 3 、缓存文件数据(id=>info)
注意事项:php5.5版本以作为内置函数,使用前请注意命名冲突。
From(EQPHP工具类):https://github.com/eqphp/framework/blob/master/www/class/fun.php
演示作品:http://www.eqphp.com/blog/list/
- //处理记录集(php5.5内置)
- static function array_column($data,$key='id',$column=null){
-
- $buffer=null;
-
- if ($column) {
- //k=>v
- if (strpos($column,',') === false) {
- foreach ($data as $value) {
- $buffer[$value[$key]]=$value[$column];
- }
- return $buffer;
- }
-
- //k=arr
- $field=explode(',',$column);
- foreach ($data as $value) {
- $id=$value[$key];
- array_walk($value,function ($v,$k) use (&$value,$field){
- if (!in_array($k,$field)) unset($value[$k]);
- });
- $buffer[$id]=$value;
- }
- return $buffer;
- }
-
- //id_arr
- foreach ($data as $value) {
- $buffer[]=$value[$key];
- }
- return $buffer;
- }
-
-
-
- //用法demo:
- //原记录集:
- $data=array(
- array('id'=>1,'name'=>'dubox','age'=>25,'girlfriend'=>'苏打绿'),
- array('id'=>4,'name'=>'小春子','age'=>21,'girlfriend'=>'不知道'),
- array('id'=>9,'name'=>'白痴','age'=>71,'girlfriend'=>'寡妇'),
- );
-
- $ids=array_column($data,'id');
- //out: array(1,4,9);
-
- $info=array_column($data,'name','girlfriend');
- //out: array('dubox'=>'苏打绿','小春子'=>'不知道','白痴'=>'寡妇');
-
- $cache=array_column($data,'id','name,age,girlfriend');
- //out: array(
- 1=>array('name'=>'dubox','age'=>25,'girlfriend'=>'苏打绿'),
- 4=>array('name'=>'小春子','age'=>21,'girlfriend'=>'不知道'),
- 9=>array('name'=>'白痴','age'=>71,'girlfriend'=>'寡妇'),
- );
复制代码
|