今天想从二维数组中取某个列成一维数组 结果发现 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();