static 放在函数内部修饰变量
静态变量在函数执行完后,变量值仍然保存,不销毁
// 普通变量在函数中每次调用时,都会重新初始化
function t(){
$a = 10; // 普通变量
$a++;
return $a;
}
echo t(); // 11
echo t(); // 11
echo t(); // 11
// static静态变量,在第1次函数调用声明后存在,且不随函数结束而结束,当函数再次调用时,直接利用上次的结果
function t(){
static $a = 10; // 静态变量
$a++;
return $a;
}
echo t(); // 11
echo t(); // 12
echo t(); // 13
静态变量与递归函数
// 静态变量与递归函数
$arr = array(1,2,3,array(4,array(5,6)));
function sum($arr){
static $sum = 0;
foreach ($arr as $value){
if (is_array($value)){
sum($value);
continue;
} // 这里用 else 也可以和 continue 一样效果
$sum += $value;
}
return $sum;
}
echo sum($arr);