Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Tidak Boleh Mengakses Pembolehubah Global Di Dalam Fungsi PHP?
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:
function foo($sxml){ $child = $sxml->addChild('child'); } foo($sxml);
function foo(){ global $sxml; $child = $sxml->addChild('child'); } foo();
function bar() { $sxml = new SimpleXMLElement('<somexml/>'); $foo = function() use(&$xml) { $child = $sxml->addChild('child'); }; $foo(); } bar();
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!