亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁課程PHP Fun Breakthrough Class自定義函數(shù)之變量作用域

自定義函數(shù)之變量作用域

目錄列表

變量作用域

我們通過前面的章節(jié)函數(shù)定義部份的學(xué)習(xí)我們知道了幾個(gè)不同的規(guī)矩:

  • 函數(shù)定義時(shí)后括號(hào)里面接的變量是形式上的參數(shù)(形參),與函數(shù)體外的變量沒有任何關(guān)系。僅僅是在函數(shù)內(nèi)部執(zhí)行

  • 函數(shù)內(nèi)聲明的變量也與函數(shù)外的變量沒關(guān)系。

但是,我們實(shí)際的處理情況中會(huì)遇到這樣的一個(gè)情況:

  • 我想在函數(shù)體內(nèi)定義的變量在函數(shù)體外用

  • 我想把函數(shù)體外的變量拿到函數(shù)體內(nèi)來使用

1.通過$GLOBLAS來讀取外部變量:

<?php

$one = 10;
function demo(){
   $two = 100;
   $result = $two + $GLOBALS['one'];
   return $result;
}
//你會(huì)發(fā)現(xiàn)結(jié)果變成了110
echo demo();

?>


上例中:我們將函數(shù)體外的變量通過$GLOBALS拿到了函數(shù)體使用。所以,打破了函數(shù)外的變量不能在函數(shù)體內(nèi)使用的限定。

2.通過$GLOBLAS,在函數(shù)內(nèi)修改外部變量:

<?php

$hongniu = '我是一個(gè)兵,來自老百姓';
function test(){
   echo '執(zhí)行了函數(shù)test喲<br />';
   //調(diào)用test()函數(shù),將通過$GLOBALS['hongniu'],把$hongniu的值改變掉

   $GLOBALS['hongniu'] = '幫助別人很快樂';
}
test();
//發(fā)現(xiàn)是不是輸出的值變了呀?
echo $hongniu;

?>

上例中:我們發(fā)現(xiàn)通過$GLOBALS['hongniu'],把$hongniu的值改變掉,所以在最后輸出$hongniu的時(shí)候,值發(fā)生了變化。

3.通過$GLOBLAS,在函數(shù)內(nèi)創(chuàng)建全局變量:

<?php

function hello(){
   $GLOBALS['que'] = '提神喝茶更好喲';
   echo '你調(diào)了一下函數(shù)hello<br />';
}
hello();
echo $que;

?>


上例中:我們發(fā)現(xiàn)$que是不存在的,可以調(diào)用函數(shù)hello()后,在函數(shù)外部可以執(zhí)行echo $que了,能夠看到結(jié)果:提神喝茶更好。我們明白了,函數(shù)內(nèi)聲明的變量,通過$GLOBALS聲明一個(gè)變量,也能夠顯示出來。

在函數(shù)內(nèi)使用global關(guān)鍵詞后面跟一個(gè)或多個(gè)變量,就把變量變?yōu)榱巳肿兞?,格式如下?/p>

在global后面可以跟一個(gè)或者多個(gè)變量,變量用逗號(hào)分開。

實(shí)際上global是起傳遞參數(shù)的作用,而并非使變量的作用域?yàn)槿帧?/p>

實(shí)例:

<?php
$a = 10;
$b = 100;
function test(){
   global $a , $b;
   echo $a + $b;
}
//結(jié)果是不是顯示出來了?
test();
?>

上例中:你還可以試試在global關(guān)鍵詞后面跟著未創(chuàng)建的變量,在函數(shù)體內(nèi)定義變量值,修改變量的值試試。其實(shí)與$GLOBALS一樣,只是用法不同而已。

注意:不可在global 后寫 $變量 = 值。

填寫空格,讓函數(shù)外部的變量改變?cè)怠?/h2>

<?php 

$foo = 100; 

function demo($n){  

$n = 10; 

}

echo demo($foo).'<br />';  

$foo; 

?>

1/2