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

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

Mary-Kate Olsen
リリース: 2024-12-10 15:57:10
オリジナル
728 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート