>  기사  >  백엔드 개발  >  수직선과 수평선을 결합하여 레코드 세트 슈퍼 처리 함수 array_column의 업그레이드 버전이 구현됩니다.

수직선과 수평선을 결합하여 레코드 세트 슈퍼 처리 함수 array_column의 업그레이드 버전이 구현됩니다.

WBOY
WBOY원래의
2016-07-25 08:48:35983검색
靓点:简化操作,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. );
复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.