- //产生一个10000的一个数组。
- $max = 10000;
- $temp = 0;
- //我们分别用三种方法测试求这些数加上1的值的时间。
-
- // for 的方法
- for ($i = 0; $i < $max; $i++) {
- $temp = $temp + 1;
- }
- $t = $t2 - $t1;
- echo "就使用for, 没有对数组操作 花费: {$t}<br>";
-
- for ($i = 0; $i < $max; $i++) {
- $test_arr[$i] = $test_arr[$i] + 1;
- }
- $t = $t2 - $t1;
- echo "使用for 并且直接对数组进行了操作 花费: {$t}<br>";
-
- for ($i = 0; $i < $max; $i++) {
- addOne($test_arr[$i]);
- }
- $t = $t2 - $t1;
- echo "使用for 调用函数对数组操作 花费 : {$t}<br>";
-
- foreach ($test_arr as $k => &$v) {
- $temp = $temp + 1;
- }
- $t = $t2 - $t1;
- echo "使用 foreach 没有对数组操作 花费 : {$t}<br>";
-
- foreach ($test_arr as $k => &$v) {
- $v = $v + 1;
- }
- $t = $t2 - $t1;
- echo "使用 foreach 直接对数组操作 : {$t}<br>";
-
- foreach ($test_arr as $k => &$v) {
- addOne($v);
- }
- $t = $t2 - $t1;
- echo "使用 foreach 调用函数对数组操作 : {$t}<br>";
-
- //array_walk($test_arr,
- // function ($item, $key) use (&$test_arr) {
- // $test_arr[$key] = $item + 1;
- //});
- $t = $t2 - $t1;
- echo "使用 array_walk 花费 : {$t}<br>";
-
- return $val + 1;
- }, $test_arr);
- $t = $t2 - $t1;
- echo "使用 array_map 花费 : {$t}<br>";
-
- function addOne(&$item) {
- $item = $item + 1;
- }
运行结果:
就使用for, 没有对数组操作 花费: 0.00025606155395508
使用for 并且直接对数组进行了操作 花费: 0.00042009353637695
使用for 调用函数对数组操作 花费 : 0.00097513198852539
使用 foreach 没有对数组操作 花费 : 0.00043892860412598
使用 foreach 直接对数组操作 : 0.00044989585876465
使用 foreach 调用函数对数组操作 : 0.00089097023010254
使用 array_walk 花费 : 0.00073599815368652
使用 array_map 花费 : 0.0004730224609375