$count = 5;
function get_count()
{
static $count = 0;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();
Run Code Online (Sandbox Code Playgroud)
我猜测它输出5 0 1并且它是正确的,但我需要更好的解释?
Ali*_*xel 41
$count = 5; // "outer" count = 5
function get_count()
{
static $count = 0; // "inner" count = 0 only the first run
return $count++; // "inner" count + 1
}
echo $count; // "outer" count is still 5
++$count; // "outer" count is now 6 (but you never echoed it)
echo get_count(); // "inner" count is now + 1 = 1 (0 before the echo)
echo get_count(); // "inner" count is now + 1 = 2 (1 before the echo)
echo get_count(); // "inner" count is now + 1 = 3 (2 before the echo)
Run Code Online (Sandbox Code Playgroud)
我希望这能清除你的想法.
Tho*_*rin 13
您有两个单独的变量,都称为$ count,但它们具有不同的范围.第一个变量未显式声明,但在您第一次分配时就已存在.
第二个变量(在方法内)仅对该方法可见.由于它是静态的,因此在同一方法的多次执行之间保留其值.分配$count = 0;仅在第一次运行方法时执行.
至于增量运算符(++),评估的结果是增加之前的值,因为(一元)运算符在变量名之后.所以是的,输出将是5,0,1.
如果你要写return ++$count;,结果将是5,1,2.
注意:由于评估结果被丢弃++$count,因此您在现有代码中具有实际等效性$count++.对$count变量的影响是相同的:它增加1.
First echo:给你在第一行声明的变量$ count.
第二个echo:calles get_count,它创建静态变量$ count(所以它在这个函数的上下文中),当你实例化静态变量时,你将它设置为零.return $ count ++是我们通常在代码中避免的那些行之一 - 但实质上,它在返回值后递增.
第三个回声:同样,在前一个get_count调用之后,0增加到1,这里发生的情况相同 - 它返回1并将值递增到2.
这有帮助还是实际上更令人困惑?