<?php class MyClass{ function add($b){ static $a=1; $a+=$b; return $a; } } $class = new MyClass(); for($i=0;$i<=5;$i++){ $c=$class->add($i); } echo($c); /*分析: $i = 0; $i<=5;(true) $i++ =1; $c=$class->add(1); $b = 1; static $a=1; $a+=$b = 2; $c=2; 第二次循环: $i = 1; $i<=5;(true) $i++ =2; $c=$class->add(2); php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。 静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。 $b=2; $a = 2; $a+=b = 4; $c=4; 第三次循环: $i = 2; $i<=5;(true) $i++ =3; $c=$class->add(3); $b=3; $a = 2; $a+=b = 5; $c=5; 第四次次循环: $i = 3; $i<=5;(true) $i++ =4; $c=$class->add(4); $b=4; $a = 2; $a+=b = 6; $c=6; 第五次次循环: $i = 4; $i<=5;(true) $i++ =5; $c=$class->add(5); $b=5; $a = 2; $a+=b = 7; $c=7; */ // 2->4->7->11->16
首先按照你的思路来 第三次a刚开始应该是4而不是2 因为你第二次已经return a=4了 还有就是for应该是从0开始走的
1 $i=0 $a=1; 2 $i=1 $a=2; 3 $i=2 $a=4; 4 $i=3 $a=7; 5 $i=4 $a=11; 6 $i=5 $a=16;
谢谢 明白了