靚點:簡化操作,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'=>'寡婦'),
- );
複製代碼 |