Php while循环不工作,奇怪的错误

时间:2013-09-15 22:31:26

标签: php while-loop

这是我的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  

5 个答案:

答案 0 :(得分:4)

$ i未在功能范围内定义。每次重置为零。

$i = 0;

function f() {
    global $i;
    $i++;
    echo $i;
    return $i<3; //thanks @styxxy
}

while (f());

答案 1 :(得分:1)

函数内的$i变量是一个局部变量(该函数)。如果要访问函数外部的变量,请使用global。这与variable scope

有关
<?php
$i = 0;

function f() {
    global $i;
    $i++;
    echo $i;
    if ($i < 3) return true;
    return false;
}

while(f());

最好确保在所有代码路径上返回一个值(而不是依赖于默认值)。

答案 2 :(得分:0)

$ i是一个全局变量,在函数外部声明。另一个$ i是一个局部变量,它有一个存储位置但没有初始值。如果要从函数中引用全局变量,请添加全局关键字...

答案 3 :(得分:0)

我是全球变量吗? 我认为你应该让它知道函数f()。
像这样

global $i;

答案 4 :(得分:-1)

为什么不呢:

$i = 0;

while($i<3){
    $i++;
    f($i);
}

function f($i){
    echo $i;
}