미니 프로그램을 사용하여 array_walk, foreach, for의 효율성을 판단하고 미니 프로그램을 통해 다음과 같은 결과를 찾습니다.
1 foreach의 효율성이 for보다 훨씬 높으므로 PHP가 foreach 기능을 최적화했습니다. for 및 foreach를 사용할 수 있는 경우 foreach를 사용하는 것이 좋습니다.
2. 루프 내에서 함수를 호출하려면 array_walk를 사용하는 것이 가장 좋습니다.
<?php /** * array_walk 和 foreach, for 的效率的比较。 * 我们要测试的是foreach, for, 和 array_walk的效率的问题。 */ //产生一个10000的一个数组。 $max = 1000000; $test_arr = range(0, $max); $temp; //我们分别用三种方法测试求这些数加上1的值的时间。 // for 的方法 $t1 = microtime(true); for ($i = 0; $i < $max; $i++) { $temp = $temp + 1; } $t2 = microtime(true); $t = $t2 - $t1; echo "就使用for, 没有对数组操作 花费: {$t}\n"; $t1 = microtime(true); for ($i = 0; $i < $max; $i++) { $test_arr[$i] = $test_arr[$i] + 1; } $t2 = microtime(true); $t = $t2 - $t1; echo "使用for 并且直接对数组进行了操作 花费: {$t}\n"; $t1 = microtime(true); for ($i = 0; $i < $max; $i++) { addOne($test_arr[$i]); } $t2 = microtime(true); $t = $t2 - $t1; echo "使用for 调用函数对数组操作 花费 : {$t}\n"; $t1 = microtime(true); foreach ($test_arr as $k => &$v) { $temp = $temp + 1; } $t2 = microtime(true); $t = $t2 - $t1; echo "使用 foreach 没有对数组操作 花费 : {$t}\n"; $t1 = microtime(true); foreach ($test_arr as $k => &$v) { $v = $v + 1; } $t2 = microtime(true); $t = $t2 - $t1; echo "使用 foreach 直接对数组操作 : {$t}\n"; $t1 = microtime(true); foreach ($test_arr as $k => &$v) { addOne($v); } $t2 = microtime(true); $t = $t2 - $t1; echo "使用 foreach 调用函数对数组操作 : {$t}\n"; $t1 = microtime(true); array_walk($test_arr, 'addOne'); $t2 = microtime(true); $t = $t2 - $t1; echo "使用 array_walk 花费 : {$t}\n"; function addOne(&$item) { $item = $item + 1; } ?>
for만 사용하면 비용이 들지 않습니다. 배열 작업: 0.348432064056
배열에 사용하고 직접 작동: 0.493929862976
for 호출 함수를 사용하여 배열 작업을 작동: 1.49323606491
Foreach를 사용하여 배열 작동: 0.33071398735
70938
사용 foreach는 어레이에서 작동하는 함수를 호출합니다: 1.13249397278
array_walk 사용 비용: 1.2829349041
위 내용은 Array_walk와 foreach의 효율성 비교를 소개하며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.