Skop pembolehubah fungsi tersuai php

Kami mengetahui beberapa peraturan yang berbeza melalui mengkaji bahagian definisi fungsi dalam bab sebelumnya:

Apabila fungsi ditakrifkan, pembolehubah yang disertakan dalam kurungan ialah parameter formal ( parameter formal) dan tiada kaitan dengan pembolehubah di luar fungsi. Hanya melaksanakan dalam fungsi

Pembolehubah yang diisytiharkan dalam fungsi tidak ada kaitan dengan pembolehubah di luar fungsi.

Walau bagaimanapun, kita akan menghadapi situasi sedemikian dalam pemprosesan sebenar:

Saya mahu pembolehubah yang ditakrifkan dalam badan fungsi digunakan di luar fungsi

Saya mahu menggunakan fungsi Pembolehubah di luar badan digunakan di dalam fungsi

Pada masa ini kita perlu menggunakan pembolehubah super global. Mari semak semula mata pengetahuan sebelumnya:

全局变量名功能说明
$_COOKIE得到会话控制中cookie传值
$_SESSION得到会话控制中session的值
$_FILES得到文件上传的结果
$_GET得到get传值的结果
$_POST得到post传值的结果
$_REQUEST即能得到get的传值结果,也能得到Post传值的结果

Mari kita perhatikan ciri-ciri pembolehubah luaran (pembolehubah super-global) melalui eksperimen dan langgar peraturan yang kami rumuskan pada permulaan bab ini:

Mari kita tentukan halaman global.html untuk menulis kandungan HTML:

<html>
   <head>
       <title>超全局数组实验</title>
   </head>
   <body>
       <!--先用POST来实验,以后你可以改成GET哟 -->
       <form action="glob.php" method="post">
           <input type="text" name="hongniu" /><br />

           <input type="submit" value="提交" />
       </form>

   </body>
</html>

Kami menyerahkan kandungan html ke halaman glob.php melalui borang borang Mari tulis glob.php sekarang:

<?php 
function demo(){ 
echo $_POST['hongniu']; 
} 
demo(); 
?>

Melalui contoh kecil ini, anda akan menemui super-. global $ Siri pembolehubah superglobal ini (pembolehubah luaran) seperti _POST juga boleh digunakan di dalam fungsi. Tiada sekatan pada skop pembolehubah seperti pada permulaan artikel ini. Malah, semua pembolehubah kami yang diisytiharkan diletakkan di bawah tatasusunan $GLOBALS Contohnya:

<?php
$hello = 10;

echo $GLOBALS['hello'].'<br />';

$GLOBALS['hello'] = '我爱你';

echo $hello;

?>

Melalui contoh di atas, anda akan mendapati bahawa nama $variable adalah bersamaan dengan $. GLOBALS['nama pembolehubah'] . Semua pembolehubah diletakkan dalam $GLOBALS. Dan $GLOBALS juga global.

Oleh itu, kita boleh mencapai matlamat kita: gunakan pembolehubah (pembolehubah tempatan) dalam badan fungsi di luar fungsi. Anda juga boleh menggunakan pembolehubah di luar fungsi di dalam fungsi.

1. Baca pembolehubah luaran melalui $GLOBLAS

<?php

$one = 10;

function demo(){
   $two = 100;

   $result = $two + $GLOBALS['one'];

   return $result;

}
//你会发现结果变成了110
echo demo();

?>

Dalam contoh di atas: kita mendapatkan pembolehubah di luar badan fungsi melalui $GLOBALS dan menggunakannya dalam badan fungsi . Oleh itu, sekatan bahawa pembolehubah di luar fungsi tidak boleh digunakan dalam badan fungsi dipecahkan.

2. Ubah suai pembolehubah luaran dalam fungsi melalui $GLOBLAS

<?php

$hongniu = '我是一个兵,来自老百姓';

function test(){

   echo '执行了函数test哟<br />';
   //调用test()函数,将通过$GLOBALS['hongniu'],把$hongniu的值改变掉

   $GLOBALS['hongniu'] = '帮助别人很快乐';
}

test();
//发现是不是输出的值变了呀?
echo $hongniu;

?>

Melalui contoh di atas: kami mendapati bahawa melalui $GLOBALS['hongniu'], $hongniu's The nilai berubah, jadi apabila $hongniu akhirnya dikeluarkan, nilai berubah.

3 Cipta pembolehubah global dalam fungsi melalui $GLOBLAS

<?php

function hello(){

   $GLOBALS['que'] = '提神喝茶更好哟';

   echo '你调了一下函数hello<br />';
}

hello();

echo $que;

?>

Dalam contoh di atas, kami mendapati bahawa $que tidak wujud dan kami boleh memanggil function hello() Akhirnya, echo $que boleh dilaksanakan di luar fungsi, dan hasilnya dapat dilihat: lebih baik minum teh untuk menyegarkan diri anda. Kami faham bahawa pembolehubah yang diisytiharkan dalam fungsi juga boleh dipaparkan dengan mengisytiharkan pembolehubah melalui $GLOBALS.

Pengetahuan berikut berada pada tahap [pemahaman], dan kami semakin kurang menggunakan kaedah ini untuk mengisytiharkan pembolehubah global. Menggunakan kata kunci global diikuti oleh satu atau lebih pembolehubah dalam fungsi menukar pembolehubah menjadi pembolehubah global Formatnya adalah seperti berikut:

global $variable1[, variable2,....variablen ]<. 🎜>

Global boleh diikuti oleh satu atau lebih pembolehubah, dan pembolehubah dipisahkan dengan koma.

<?php
$a = 10;
$b = 100;
function test(){
   global $a , $b;
   echo $a + $b;
}
//结果是不是显示出来了?
test();
?>

Dalam contoh di atas, anda juga boleh cuba mengikuti kata kunci global dengan pembolehubah yang tidak dicipta, mentakrifkan nilai pembolehubah dalam badan fungsi dan cuba mengubah suai nilai pembolehubah. Sebenarnya ia sama dengan $GLOBALS, tetapi penggunaannya berbeza.

Nota:

Jangan tulis $variable = value selepas global.


global

Sebutan: [ˈgləʊbl]
Penjelasan: global, global

Meneruskan pembelajaran
||
<?php function hello(){ $GLOBALS['que'] = '提神喝茶更好哟'; echo '你调了一下函数hello<br />'; } hello(); echo $que; ?>
  • Cadangan kursus
  • Muat turun perisian kursus