这是我的php:
<?
$i = 0;
function f() {
$i++;
echo $i;
if ($i < 3) {
return true;
}
}
while(f())
?>
我期待输出是123
但我明白了:
Fatal error: Maximum execution time of 30 seconds exceeded in exp.php on line 5
这是我的php:
<?
$i = 0;
function f() {
$i++;
echo $i;
if ($i < 3) {
return true;
}
}
while(f())
?>
我期待输出是123
但我明白了:
Fatal error: Maximum execution time of 30 seconds exceeded in exp.php on line 5
$i 未在函数范围内定义。每次都归零。
$i = 0;
function f() {
global $i;
$i++;
echo $i;
return $i<3; //thanks @styxxy
}
while (f());
函数内部的$i
变量是(该函数的)局部变量。如果要访问函数外部的变量,请使用global
. 这与变量范围有关。
<?php
$i = 0;
function f() {
global $i;
$i++;
echo $i;
if ($i < 3) return true;
return false;
}
while(f());
确保在所有代码路径上返回一个值(而不是依赖于默认值)也是一种很好的做法。
$i 是一个全局变量,在函数外部声明。另一个 $i 是一个局部变量,它有一个存储位置但没有初始值。如果要在函数内引用全局变量,请添加 global 关键字...
我是一个全局变量对吗?我认为你应该让函数 f() 知道它。
像这样
global $i;
为什么不只是:
$i = 0;
while($i<3){
$i++;
f($i);
}
function f($i){
echo $i;
}