PHP:全局变量未在函数内被拾取

All*_*n S 1 php variables global-variables

这让我大吃一惊......

我有一个独立的PHP文件,以及一个带有全局变量的简单函数.

<?php
    $var = 4;

    function echoVar()
    {
        echo $var; 
    }

    echoVar();
?>
Run Code Online (Sandbox Code Playgroud)

当我打电话echoVar()什么都没有返回...但是如果我把$var函数放在里面它将返回4.

这里发生了什么?$var在这种情况下不应该是全球性的吗?

Ter*_*vey 5

如果变量设置在函数外部,则在该函数内部不可见.要访问它,您必须使用global关键字将其声明为全局.这称为范围.

<?php

$var = 4;

function echoVar() {
    global $var;

    echo $var;
}

echoVar();
Run Code Online (Sandbox Code Playgroud)

注意:这通常被认为是不好的做法.阅读本文以获取更多信息.

一个很好的选择是将变量作为参数传递:

<?php

$var = 4;

function echoVar($var) {
    echo $var;
}

echoVar($var);
Run Code Online (Sandbox Code Playgroud)