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

PHP 自定義函數(shù)高級用法

回調(diào)函數(shù)

回調(diào)函數(shù),可以配合匿名函數(shù)和變量函數(shù)實(shí)現(xiàn)更加優(yōu)美、復(fù)雜的一種函數(shù)結(jié)構(gòu)。

回調(diào)函數(shù),就是在處理一個功能的時候,讓這個功能自定義能力再強(qiáng)一些, 準(zhǔn)許調(diào)用這個函數(shù)的時候,還可以傳入一個函數(shù)配合、協(xié)助進(jìn)行處理。

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

處理過程是這樣的:

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

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

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

帶入至里面后而$func,是可變的,可以為plusx2或者jian。如果為plusx2的話,$one = 20,$two = 10 的這個兩個結(jié)果又給了plusx2函數(shù)里面的$foo和$bar

$foo + $bar 乘以2后將結(jié)果返回至woziji這個函數(shù)功能體的運(yùn)算處:$one + $two + $func($one,$two);

這樣主得到了運(yùn)算結(jié)果

現(xiàn)在我們明白了回調(diào)函數(shù):在一個調(diào)數(shù)里面,再傳入一個函數(shù)名,將函數(shù)名加上()括號。識為變量函數(shù),配合執(zhí)行。

變量函數(shù)

可變函數(shù),我們也會稱呼為變量函數(shù)

變量函數(shù)的用法是這樣的:

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

? ? ?

匿名函數(shù)

有時候某個函數(shù)對于我們來說僅僅是為了某些臨時的處理,函數(shù)沒有復(fù)用的必要,起個名字是很麻煩的事情,所以需要匿名函數(shù)來處理

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

匿名函數(shù)的第一種用法,直接把賦數(shù)賦值給變量,調(diào)用變量即為調(diào)用函數(shù)。

變量函數(shù)式的匿名函數(shù)

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

回調(diào)式的匿名函數(shù)

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

內(nèi)部函數(shù):

內(nèi)部函數(shù),是指在函數(shù)內(nèi)部又聲明了一個函數(shù)。

注意事項:

內(nèi)部函數(shù)名,不能是已存在的函數(shù)名

假設(shè)在函數(shù)a里面定義了一個內(nèi)部函數(shù),不能定用兩次函數(shù)a。

我們下面來看代碼,你將很快的學(xué)習(xí)會:

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

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

仔細(xì)觀察和實(shí)驗后會得出如下的結(jié)論:

1. foo()調(diào)用兩次會報錯

2. 如果不調(diào)foo()函數(shù)無法執(zhí)行bar函數(shù),因為bar是在foo的內(nèi)部


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