Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数外部的变量是全局变量吗?_Php_Variables_Global Variables_Global - Fatal编程技术网

Php 函数外部的变量是全局变量吗?

Php 函数外部的变量是全局变量吗?,php,variables,global-variables,global,Php,Variables,Global Variables,Global,函数之外是类似sorta的全局作用域(与类似C的语言相比),但您必须做一件事来允许访问函数内的var: <?php $foo = 1; function meh(){ global $foo; // <-- $foo now can be accessed } ?> 是。可以从任何位置访问它们,包括其他脚本。它们稍微好一点,因为您必须使用global关键字从函数中访问它们,这样可以更清楚地了解它们的来源和用途 但这并不会像某些OO语言中经常看到的那样,立即让它们

函数之外是类似sorta的全局作用域(与类似C的语言相比),但您必须做一件事来允许访问函数内的var:

<?php

$foo = 1;

function meh(){
  global $foo;
  // <-- $foo now can be accessed
}

?>

是。可以从任何位置访问它们,包括其他脚本。它们稍微好一点,因为您必须使用
global
关键字从函数中访问它们,这样可以更清楚地了解它们的来源和用途


但这并不会像某些OO语言中经常看到的那样,立即让它们变得邪恶。如果他们提供了一个有效且易于理解的好解决方案,那么你就没事了。实际上有数百万成功的PHP项目使用这样声明的全局变量。您可能犯的最大错误是不使用它们,使您的代码变得更加复杂,而一开始使用它们是完全可以的D

在您的示例中,
$foo
被创建为全局范围中的变量。(除非显示的脚本包含在另一个函数/方法范围内的
中()


PHP没有真正的全局变量。您必须使用
global$foo手动为其添加别名语句来访问它们。(还有“任何全球事物都是坏的”的建议就是,坏建议。)

如果我正确理解了你的问题,那真的不应该有问题。除非您将一个变量声明为全局变量,否则它将被限制在声明它的范围内,在本例中,上述代码定义在任何php文件中。您可以在meh()中声明另一个变量$foo,它将独立于在外部定义的$foo。

在任何函数外部定义的所有变量都在全局范围内声明。如果要访问全局变量,有两种选择:

  • 使用全局关键字

    
    
  • 或者使用$GLOBALS

    
    
    阅读更多

  • <?php
    
    $foo = 1;
    
    function meh(){
      global $foo;
      // <-- $foo now can be accessed
    }
    
    ?>
    
    function meh(){
      global $foo;
      // $foo now exists in this scope
    }
    
    <?php
    $a = 1;
    $b = 2;
    
    function Sum()
    {
        global $a, $b;
    
        $b = $a + $b;
    }
    ?> 
    
    <?php
    $a = 1;
    $b = 2;
    
    function Sum()
    {
        $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
    } 
    ?>