首页 > 后端开发 > php教程 > 为什么无法访问 PHP 函数内的全局变量?

为什么无法访问 PHP 函数内的全局变量?

Mary-Kate Olsen
发布: 2024-12-10 15:57:10
原创
716 人浏览过

Why Can't I Access a Global Variable Inside a PHP Function?

无法在函数内访问全局变量

此脚本出现了无法在 foo() 内访问全局变量 $sxml 的问题函数:

$sxml = new SimpleXMLElement('<somexml/>');

function foo(){
    $child = $sxml->addChild('child');
}

foo();
登录后复制

为什么这样发生

在全局范围内声明的变量不能在函数内直接引用,除非它们在函数内显式定义为全局变量或作为参数传递。

解决方案

要在 foo() 中访问 $sxml,有几个选项:

  1. 作为参数传递:
function foo($sxml){
    $child = $sxml->addChild('child');
}
foo($sxml);
登录后复制
  1. 声明为全局:
function foo(){
    global $sxml;
    $child = $sxml->addChild('child');
}
foo();
登录后复制
  1. 创建闭包:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    $foo = function() use(&amp;$xml) {
        $child = $sxml->addChild('child');
    };
    $foo();
}
bar();
登录后复制
  1. 传递到使用嵌套函数功能:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    function foo() {
        $child = $sxml->addChild('child');
    }
    foo();
}
bar();
登录后复制

以上是为什么无法访问 PHP 函数内的全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板