合縱連橫,記錄集超強處理函數array_column的升級版實現

來源:互聯網
上載者:User
靚點:簡化操作,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/
  1. //處理記錄集(php5.5內建)
  2. static function array_column($data,$key='id',$column=null){
  3. $buffer=null;
  4. if ($column) {
  5. //k=>v
  6. if (strpos($column,',') === false) {
  7. foreach ($data as $value) {
  8. $buffer[$value[$key]]=$value[$column];
  9. }
  10. return $buffer;
  11. }
  12. //k=arr
  13. $field=explode(',',$column);
  14. foreach ($data as $value) {
  15. $id=$value[$key];
  16. array_walk($value,function ($v,$k) use (&$value,$field){
  17. if (!in_array($k,$field)) unset($value[$k]);
  18. });
  19. $buffer[$id]=$value;
  20. }
  21. return $buffer;
  22. }
  23. //id_arr
  24. foreach ($data as $value) {
  25. $buffer[]=$value[$key];
  26. }
  27. return $buffer;
  28. }
  29. //用法demo:
  30. //原記錄集:
  31. $data=array(
  32. array('id'=>1,'name'=>'dubox','age'=>25,'girlfriend'=>'蘇打綠'),
  33. array('id'=>4,'name'=>'小春子','age'=>21,'girlfriend'=>'不知道'),
  34. array('id'=>9,'name'=>'白癡','age'=>71,'girlfriend'=>'寡婦'),
  35. );
  36. $ids=array_column($data,'id');
  37. //out: array(1,4,9);
  38. $info=array_column($data,'name','girlfriend');
  39. //out: array('dubox'=>'蘇打綠','小春子'=>'不知道','白癡'=>'寡婦');
  40. $cache=array_column($data,'id','name,age,girlfriend');
  41. //out: array(
  42. 1=>array('name'=>'dubox','age'=>25,'girlfriend'=>'蘇打綠'),
  43. 4=>array('name'=>'小春子','age'=>21,'girlfriend'=>'不知道'),
  44. 9=>array('name'=>'白癡','age'=>71,'girlfriend'=>'寡婦'),
  45. );
複製代碼
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.