ホームページ >バックエンド開発 >PHPチュートリアル >PHP 関数内でグローバル変数にアクセスできないのはなぜですか?

PHP 関数内でグローバル変数にアクセスできないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-10 15:57:10716ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。