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

PHP 自訂函數進階用法

回呼函數

#回呼函數,可以配合匿名函數和變數函數實作更優(yōu)美、複雜的一種函數結構。

回呼函數,就是在處理一個功能的時候,讓這個功能自訂能力再強一些, 準許呼叫這個函數的時候,還可以傳入一個函數配合、協(xié)助進行處理。

<?php
function woziji($one, $two, $func)
{
//規(guī)定:檢查$func是否是函數,如果不是函數停止執(zhí)行本段代碼,返回false
   if(!is_callable($func))
   {
    return false;
   }
   //把$one、$two相加,再把$one和$two傳入$func這個函數中處理一次
   //$func是一個變量函數,參見變量函數
   echo $one + $two + $func($one,$two);
}
  //我們定義幾個函數試試
function plusx2($foo ,$bar)
{
$result = ($foo+$bar)*2;
return $result;
}
function jian($x, $y)
{
$result = $x - $y;
return $result;
}
//調用一下函數,woziji,向里面?zhèn)魅雲翟囋?
echo woziji(20,10,'plusx2');   // 輸出結果為 90
//將plusx2改成jian試試結果
echo woziji(20,10,'jian');   //輸出結果為 40
?>

處理過程是這樣的:

將20賦值給形參$one,10賦值給了$two,而plusx2或jian這兩個變數函數,賦值給了$func

在woziji這個函數中判斷plusx2或jian是否為函數,不是函數就return false 停止執(zhí)行了

顯示plusx2或者jian是函數。因此$one = 20, $two =10相加了,相加後,$one和$two又帶入了$func($one,$two)中。

帶入至裡面後而$func,是可變的,可以為plusx2或jian。如果為plusx2的話,$one = 20,$two = 10 的這個兩個結果又給了plusx2函數裡面的$foo和$bar

$foo + $bar 乘以2後將結果回傳至woziji這個函數功能體的運算處:$one + $two + $func($one,$two);

這樣主得到了運算結果

現在我們明白了回呼函數:在一個調數裡面,再傳入一個函數名,將函數名加上()括號。識為變數函數,配合執(zhí)行。

變數函數

可變函數,我們也會稱呼為變數函數

變數函數的用法是這樣的:

<?php
function demo()
{
echo '天王蓋地虎';
}
function test()
{
echo '小雞燉蘑菇';
}
$fu = 'demo';
//把$fu變?yōu)榱薲emo,把demo后加上了一個括號,就執(zhí)行函數了 
$fu();   // 輸出為 天王蓋地虎
//把$fu的值改為test字符串再試試?
?>

? ? ?

#匿名函數

有時候某個函數對我們來說只是為了某些臨時的處理,函數沒有復用的必要,取個名字是很麻煩的事情,所以需要匿名函數來處理

匿名函數因為沒有名字,如果要使用它,需要將其返回給一個變數。

匿名函數的第一種用法,直接把賦數賦值給變量,呼叫變數即為呼叫函數。

變數函數式的匿名函數

<?php
$greet = function($name)
{
echo $name.',你好';
};
$greet('明天');  //輸出 明天,你好
$greet('PHP');   // 輸出 PHP,你好
?>

回調式的匿名函數

<?php                
function woziji($one,$two,$func)
{                
//規(guī)定:檢查$func是否是函數,如果不是函數停止執(zhí)行本段代碼,返回false                
    if(!is_callable($func))
    {                
    return false;                
    }                
    //把$one、$two相加,再把$one和$two傳入$func這個函數中處理一次                
    //$func是一個變量函數,參見變量函數                
    echo $one + $two + $func($one,$two);  //結果為: 150                
}                
woziji(20,30,function($foo,$bar)
{                
$result = ($foo+$bar)*2;                
return $result;                
}
);                
?>

內部函數:

內部函數,是指在函數內部又宣告了一個函數。

注意事項:

內部函數名,不能是已存在的函數名

#假設在函數a裡面定義了一個內部函數,不能定用兩次函數a 。

我們下面來看程式碼,你很快就會的學習會:

<?php
function foo()
{
  echo '我是函數foo喲,調一下我才會執(zhí)行定義函數bar的過程<br />';
   function bar()
   {
     echo '在foo函數內部有個函數叫bar函數<br />';
   }
 }
 //現在還不能調用bar()函數,因為它還不存在
 bar();
 foo();
//現在可以調用bar()函數了,因為foo()函數的執(zhí)行使得bar()函數變?yōu)橐讯x的函數
 bar();
//再調一次foo()看看是不是會報錯?
 foo();
?>

你會發(fā)現,在上面foo() 函數內部又定義了一個bar函數,這就是內函數數。

仔細觀察和實驗後會得到如下的結論:

1. foo()呼叫兩次會錯誤

2. 如果不調foo()函數無法執(zhí)行bar函數,因為bar是在foo的內部


繼續(xù)學習
||
<?php function demo() { echo '天王蓋地虎'; } function test() { echo '小雞燉蘑菇'; } $fu = 'demo'; //把$fu變?yōu)榱薲emo,把demo后加上了一個括號,就執(zhí)行函數了 $fu(); // 輸出為 天王蓋地虎 //把$fu的值改為test字符串再試試? ?>