我花了测量(100000 次迭代),粘合关联数组的最快方法是什么?
Objective:获取一行1000个item,格式如下:"key:value,key2:value2"
我们有数组(例如):
$array = [
'test0' => 344,
'test1' => 235,
'test2' => 876,
...
];
测试一:
使用http_build_query和str_replace:
str_replace('=', ':', http_build_query($array, null, ','));
内爆 1000 个元素的平均时间:0.00012930955084904
测试二:
使用array_map和implode:
implode(',', array_map(
function ($v, $k) {
return $k.':'.$v;
},
$array,
array_keys($array)
));
内爆 1000 个元素的平均时间:0.0004890081976675
测试三:
使用array_walk和implode:
array_walk($array,
function (&$v, $k) {
$v = $k.':'.$v;
}
);
implode(',', $array);
内爆 1000 个元素的平均时间:0.0003874126245348
测试四:
使用foreach:
$str = '';
foreach($array as $key=>$item) {
$str .= $key.':'.$item.',';
}
rtrim($str, ',');
内爆 1000 个元素的平均时间:0.00026632803902445
我可以得出结论,粘合数组的最佳方法 - 使用 http_build_query 和 str_replace