递归函数的变量值在PHP中没有变化

时间:2016-08-27 17:05:39

标签: php recursion

我想使用递归打印1到10个数字,但它不起作用。

代码

  function table($num1) {
      if( $num1 <= 10 ) {
            echo $num1;
            echo "<br>";
            table($num1++);
        }

    }

    $num = 1;
    table($num);

这是错误

  

致命错误:&#39; 256&#39;的最大功能嵌套级别到达,   中止!

但是当我宣布$num1全球工作正常时。请有人告诉我背后的原因。

4 个答案:

答案 0 :(得分:1)

table($num1++)表示请将$num1传递给table(),然后再将其增加一个。所以这不是你想要的。

您必须改为编写table(++$num1)。这意味着首先增加$ num1,然后将其传递给table()

答案 1 :(得分:0)

因为您在副本中传递变量。所以第一个变量的值仍然是1,你无限地调用你的函数“table”。

默认情况下,对于所有变量(对象除外),PHP在将其传递给函数/方法时会生成一个副本。如果要传递相同的“内存中”变量,则必须通过引用来完成。

$myVar=1;
myFunction($myVar);

之前,你宣布你的功能是这样的:

function myFunction(&myVar) { ...}

此致

答案 2 :(得分:0)

function table($num) {
  if( $num <= 10 ) {
        echo $num;
        echo "<br>";
        table(++ $num);
    }
}
$num = 1;
table($num);

table(++ $num)表示首先增加$ num,然后传递给表函数

答案 3 :(得分:0)

尝试:

function table($value) {
        echo $value;
        echo "<br>";
        $num1=$value+1; 
  if($num1<=10){
        table($num1);
          }
}
$num = 1;
table($num);