函数内部变量递增值为1

Den*_*alj 1 php scope

编辑:很抱歉,原始代码是迭代,而我试图解决问题,我编辑了代码 这个问题开始类似,但这里是我遇到的真正问题:

在这段代码中:

<?php
    $a = 2:

    function incr(){
        $a++;
    echo $a;
    }

    echo $a;
    incr();
?>
Run Code Online (Sandbox Code Playgroud)

输出是2然后是1,这告诉我变量$a在函数内被初始化为0.服务器是否只知道我使用增量语法将变量初始化为0?

hls*_*lon 6

$a是未定义的,然后当你递增它时,它会去1.

function incr(){
    $a++; // $a is undefined
    return $a;
}
Run Code Online (Sandbox Code Playgroud)

正如手册中指出的那样:

注意:

递增/递减运算符仅影响数字和字符串.数组,对象和资源不受影响.递减NULL值也没有效果,但递增它们会产生1.

您可以使用global,它将按预期返回.

function incr(){
    global $a;
    $a++;
    return $a;
}
Run Code Online (Sandbox Code Playgroud)