/**
* 获取数组前两个元素的和
* 参数值传递,且函数不对参数进行修改
* @param $data
* @return int|mixed
*/
function sum1($data){
$sum = 0;
for($i=0; $i<2; $i++){
$sum += $data[$i];
}
return $sum;
}
/**
* 获取数组前两个元素的和
* 参数引用传递,且函数不对参数进行修改
* @param $data
* @return int|mixed
*/
function sum2(&$data){
$sum = 0;
for($i=0; $i<2; $i++){
$sum += $data[$i];
}
return $sum;
}
/**
* 获取数组前两个元素的和
* 参数值传递,且函数对参数进行修改
* @param $data
* @return int|mixed
*/
function sum3($data){
$sum = 0;
for($i=0; $i<2; $i++){
$sum += $data[$i];
$data[$i] = 0;
}
return $sum;
}
/**
* 获取数组前两个元素的和
* 参数引用传递,且函数对参数进行修改
* @param $data
* @return int|mixed
*/
function sum4(&$data){
$sum = 0;
for($i=0; $i<2; $i++){
$sum += $data[$i];
$data[$i] = 0;
}
return $sum;
}
$data = range(0, 1E6, 1);
$sum1_start = microtime(1);
for($i=0; $i<100; $i++){
sum1($data);
}
$sum1_end = microtime(1);
echo 'function sum1 data for 100 times, used: '.number_format($sum1_end-$sum1_start, 6).' s...'.PHP_EOL;
$sum2_start = microtime(1);
for($i=0; $i<100; $i++){
sum2($data);
}
$sum2_end = microtime(1);
echo 'function sum2 data for 100 times, used: '.number_format($sum2_end-$sum2_start, 6).' s...'.PHP_EOL;
$sum3_start = microtime(1);
for($i=0; $i<100; $i++){
sum3($data);
}
$sum3_end = microtime(1);
echo 'function sum3 data for 100 times, used: '.number_format($sum3_end-$sum3_start, 6).' s...'.PHP_EOL;
$sum4_start = microtime(1);
for($i=0; $i<100; $i++){
sum4($data);
}
$sum4_end = microtime(1);
echo 'function sum4 data for 100 times, used: '.number_format($sum4_end-$sum4_start, 6).' s...'.PHP_EOL;