foreach 快 还是 array_walk 快? 应该是 array_walk 吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说的是 foreach 循环 操作值 还是直接用 array_walk... array_walk 能做的 foreach 都能做到foreach 能做的 array_walk 不一定能做,例如增加/删除单元 测试代码<?phpfunction a() { $array = array(1, 2, 3, 4, 5); for($i = 0; $i < 1000000; $i ++) { $tmp = array(); foreach($array as $e) $tmp[] = $e * $e; } }function b() { $array = array(1, 2, 3, 4, 5); for($i = 0; $i < 1000000; $i ++) { $tmp = $array; array_walk($tmp, function(&$v) {$v *= $v;}); } }$start = microtime(true);a();$end = microtime(true);echo 'foreach total time: ' . ($end - $start) . chr(10);$start = microtime(true);b();$end = microtime(true);echo 'array_walk total time: ' . ($end - $start) . chr(10);?>测试输出foreach total time: 4.1798651218414array_walk total time: 10.291253089905结论#上述情况下, foreach的性能是array_walk的2.5倍左右#array_walk会多出一个函数调用的消耗. 所以会多一点..#不过平时可以忽略, 因为100万次才多6秒, 也就是一次耗时在10^-5数量级之内... phpmyadmin运行问题 难题,,不知道是不是涉及缓存的??? 为什么我打开phpmyadmin出现在这样的画面 FireFox responseXML echo输出问题 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 PHP香港服务器用file_get_contents 抓取天猫的数据都是繁体的 请高手帮忙!PHP的问题 一个正则表达式的问题,请进 怎样在PHP和javascript中进行二维数组的传递? 有相关解决办法的给分 如何进行多张表查询问题 传值问题
foreach 能做的 array_walk 不一定能做,例如增加/删除单元
function a() {
$array = array(1, 2, 3, 4, 5);
for($i = 0; $i < 1000000; $i ++) {
$tmp = array();
foreach($array as $e)
$tmp[] = $e * $e;
}
}
function b() {
$array = array(1, 2, 3, 4, 5);
for($i = 0; $i < 1000000; $i ++) {
$tmp = $array;
array_walk($tmp, function(&$v) {$v *= $v;});
}
}
$start = microtime(true);
a();
$end = microtime(true);
echo 'foreach total time: ' . ($end - $start) . chr(10);
$start = microtime(true);
b();
$end = microtime(true);
echo 'array_walk total time: ' . ($end - $start) . chr(10);
?>测试输出
foreach total time: 4.1798651218414
array_walk total time: 10.291253089905
结论#上述情况下, foreach的性能是array_walk的2.5倍左右
#array_walk会多出一个函数调用的消耗. 所以会多一点..
#不过平时可以忽略, 因为100万次才多6秒, 也就是一次耗时在10^-5数量级之内...