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
Lepaskan: 2024-12-10 15:57:10
asal
717 orang telah melayarinya

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();
Salin selepas log masuk

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);
Salin selepas log masuk
  1. Isytihar sebagai Global:
function foo(){
    global $sxml;
    $child = $sxml->addChild('child');
}
foo();
Salin selepas log masuk
  1. Buat Penutupan:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    $foo = function() use(&amp;$xml) {
        $child = $sxml->addChild('child');
    };
    $foo();
}
bar();
Salin selepas log masuk
  1. Lewati ke Fungsi Menggunakan Fungsi Bersarang:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    function foo() {
        $child = $sxml->addChild('child');
    }
    foo();
}
bar();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan