当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » PHP  » Web编程
分享到: 
收藏 +0
2
靓点:简化操作,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/
标签: EQPHP

代码片段(1) [全屏查看所有代码]

1. [代码]array_column     跳至 [1] [全屏预览]

    //处理记录集(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'=>'寡妇'),
);


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(6)

  • 1楼:EchoCyw 发表于 2014-03-27 09:51 回复此评论
    http://benramsey.com/blog/2013/07/the-array-column-php-userland-library/
  • 2楼:art_youth 发表于 2014-03-27 10:19 回复此评论

    引用来自“EchoCyw”的评论

    http://benramsey.com/blog/2013/07/the-array-column-php-userland-library/
    官网的用法单一,不够强大
  • 3楼:EchoCyw 发表于 2014-03-27 18:03 回复此评论

    引用来自“art_youth-web”的评论

    引用来自“EchoCyw”的评论

    http://benramsey.com/blog/2013/07/the-array-column-php-userland-library/
    官网的用法单一,不够强大
    确实,你的强大的多
  • 4楼:EchoCyw 发表于 2014-03-31 16:33 回复此评论
    php 5.3 会报错

    Parse error: syntax error, unexpected T_FUNCTION, expecting T_PAAMAYIM_NEKUDOTAYIM in
  • 5楼:EchoCyw 发表于 2014-03-31 16:33 回复此评论
    这一行: array_walk($value,function  ($v,$k) use  (&$value,$field){
  • 6楼:art_youth 发表于 2014-03-31 18:36 回复此评论

    引用来自“EchoCyw”的评论

    这一行: array_walk($value,function  ($v,$k) use  (&$value,$field){

    请勿在php版本小于5.3上用,具体请参考手册:array_walk 主要是匿名函数(闭包)

开源从代码分享开始 分享代码