zoukankan      html  css  js  c++  java
  • array_column php 函数

    今天想从二维数组中取某个列成一维数组 结果发现 array_column需要php5.5支持才行 然后自己写了一个仿造版本的array_column 

    两种思路

    1.直接遍历 取值给追加数组 返回

    2.先把二维数组key确定下来 遍历key 通过key取值追加数组 返回

    3.采用array_map函数遍历获取

    本次实验中 我们用了一个大数组进行循环遍历,结果发现 第一种方法快 第二种方法相对慢一点 第三种方法最慢

    代码如下:

    <?php
    
    $array=array();
    for ($i=1; $i <= 200000; $i++)
    { 
        $array[]=array(
            "id"=>$i,
            "name"=>"test_user".$i,
        );
    }
    
    
    $time_start1=microtime(true);
    $info=array_column1($array,"name");
    $time_end1=microtime(true);
    var_dump(($time_end1-$time_start1)*1000);
    echo "<hr/>";
    
    
    $time_start2=microtime(true);
    $info=array_column2($array,"name");
    $time_end2=microtime(true);
    var_dump(($time_end2-$time_start2)*1000);
    echo "<hr/>";
    
    $time_start3=microtime(true);
    $info=array_column3($array,"name");
    $time_end3=microtime(true);
    var_dump(($time_end3-$time_start3)*1000);
    echo "<hr/>";
    
    function array_column1($array,$search_key)
    {
        $data=array();//初始化结果数组
        //对二位数组按照 key value遍历取值成一维数组
        foreach ($array as $key => $value) {
            $data[$key]=$value[$search_key];
        }
        return $data;
    }
    
    function array_column2($array,$search_key)
    {
        $data=array();//初始化结果数组
        $keys=array_keys($array);
        foreach ($keys as $value) {
            $data[$value]=$array[$value][$search_key];
        }
        return $data;
    }
    
    function array_column3($array,$search_key)
    {
        $array=array_map(function($value) use($search_key) {
            return $value[$search_key];
        }, $array);
        return $array;
    }
    
    exit();
  • 相关阅读:
    canvas
    学习总结
    后台管理人员项目,添加和查询的思路
    写了项目的一些心得
    学了一丢丢的正则皮毛
    已学的前端存储(学生)
    $.ajax()方法详解即自己遇到问题(新手)
    C#中 decimal 的四舍五入
    自己写一个C#数据结构:用List<T>实现一个简单的Stack
    【转】在CentOS 6.X上部署C# 开发环境
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/4234277.html
Copyright © 2011-2022 走看看