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();
原文地址:https://www.cnblogs.com/lizhaoyao/p/4234277.html