Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Tidak Boleh Mengakses Pembolehubah Global Di Dalam Fungsi PHP?

Mengapa Saya Tidak Boleh Mengakses Pembolehubah Global Di Dalam Fungsi PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-10 15:57:10716semak imbas

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

Tidak Dapat Mengakses Pembolehubah Global Dalam Fungsi

Skrip ini mempamerkan isu di mana pembolehubah global $sxml tidak boleh diakses dalam foo() fungsi:

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

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

foo();

Kenapa Ini Berlaku

Pembolehubah yang diisytiharkan dalam skop global tidak boleh dirujuk secara langsung dalam fungsi melainkan ia ditakrifkan secara eksplisit sebagai global dalam fungsi atau diluluskan sebagai hujah.

Penyelesaian

Untuk mengakses $sxml dalam foo(), terdapat beberapa pilihan:

  1. Lulus sebagai Hujah:
function foo($sxml){
    $child = $sxml->addChild('child');
}
foo($sxml);
  1. Isytihar sebagai Global:
function foo(){
    global $sxml;
    $child = $sxml->addChild('child');
}
foo();
  1. Buat Penutupan:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    $foo = function() use(&amp;$xml) {
        $child = $sxml->addChild('child');
    };
    $foo();
}
bar();
  1. Lewati ke Fungsi Menggunakan Fungsi Bersarang:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    function foo() {
        $child = $sxml->addChild('child');
    }
    foo();
}
bar();

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengakses Pembolehubah Global Di Dalam Fungsi PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn