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

  1. 普通函數(shù)的定義及調(diào)用與js相似,這個(gè)定義方式無(wú)需返回值,哪怕是有返回值在聲明的時(shí)候也無(wú)需添加
  2. 再后來(lái)的PHP版本中是添加了一向很有用的功能就是可在函數(shù)定義之前進(jìn)行調(diào)用
echo add(1,2);
echo "</br>";
function add($a,$b){
    return $a+$b;
}
function sub($a,$b){
    return $a-$b;
}
echo add(23,12);
echo "</br>";
echo sub(23,22);
echo "</br>";
  1. 下面是一個(gè)非常有用的功能就是變量函數(shù),顧名思義就是將函數(shù)作為一個(gè)變量捐寥。
  2. 其優(yōu)點(diǎn)在于用同一個(gè)變量可以調(diào)用不同的函數(shù),非常類(lèi)似于函數(shù)的多態(tài)調(diào)用。
$var="add";
echo $var(4,2);
echo "</br>";
$var="sub";
echo $var(4,2);
echo "</br>";
  • 回調(diào)函數(shù)就是在給一個(gè)函數(shù)傳入一個(gè)簡(jiǎn)單的參數(shù)無(wú)法解決問(wèn)題的時(shí)候給他傳入一個(gè)過(guò)程,從而達(dá)到目的

  • 在函數(shù)調(diào)用時(shí)給他傳入一個(gè)函數(shù)作為參數(shù)就是函數(shù)回調(diào)卤材。

$arr=array(2,3,5,4,1,6,7,9,8);
var_dump($arr);
echo "</br>";
//這里是自定義回調(diào)函數(shù),返回-1是指將兩個(gè)元素交換,0和1是不發(fā)生改變训措。
function myrule($a,$b){
    if ($a>$b){
        return 1;
    }
    elseif ($a<$b){
        return -1;
    }
    else{
        return 0;
    }
}
//usort就是系統(tǒng)函數(shù),但是他的第二個(gè)參數(shù)是回調(diào)函數(shù),這個(gè)函數(shù)參數(shù)就是排序規(guī)則
usort($arr,"myrule");
var_dump($arr);
echo "</br>";
  • 自己寫(xiě)回調(diào)函數(shù),使用變量函數(shù)以及回調(diào)完成一個(gè)簡(jiǎn)單的過(guò)濾條件,如果需多個(gè)條件同時(shí)滿足給一個(gè)&&關(guān)系即可舟舒。
  • 其中使用的變量函數(shù)可以使用系統(tǒng)中的一個(gè)叫做call_user_func_array()的函數(shù)進(jìn)行調(diào)用,他有兩個(gè)參數(shù)分別是回調(diào)函數(shù)名稱(chēng),以及參數(shù)數(shù)組
  • call_user_func_array("demo",array(1,3));其優(yōu)點(diǎn)在于array中的參數(shù)的數(shù)量可以比原函數(shù)的少,既有默認(rèn)缺省參數(shù)的時(shí)候。
//rule1除去數(shù)組中是三的倍數(shù)的數(shù)
function rule1($a){
    if ($a%3==0){
        return true;
    }else{
        return false;
    }
}
//rule2是除去數(shù)組中的回文數(shù)(從左邊讀與從右邊讀是一樣的)
function rule2($a){
    if ($a==strrev($a)){
        return true;
    }else{
        return false;
    }
}
function demo($n,$var){
    for ($i=0;$i<$n;$i++){
        if (call_user_func_array($var,array(23)))
        //if ($var($i))
        {
            continue;
        }else{
            echo $i."<br>";
        }
    }
}
$var="rule1";
demo(100,$var);
echo "</br>";
echo "<hr>";
$var="rule2";
demo(200,$var);
echo "</br>";

1 注意在調(diào)用對(duì)象里面的方法時(shí)我們需要傳入一個(gè)匿名對(duì)象,后面指定函數(shù)名
2 而在調(diào)用類(lèi)中的靜態(tài)方法時(shí)只需指定類(lèi)名即可。

  • 以上兩種情況都不能完全使用變量函數(shù)只能用系統(tǒng)的回調(diào)call_user_func_array(),只是變量函數(shù)來(lái)傳參而不調(diào)用
class A{
    function one(){
    }
    static function two(){
    }
}
demo(200,array(new A,"one"));
demo(200,array("A","two"));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惭缰,一起剝皮案震驚了整個(gè)濱河市珠漂,隨后出現(xiàn)的幾起案子晚缩,更是在濱河造成了極大的恐慌,老刑警劉巖媳危,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荞彼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡待笑,警方通過(guò)查閱死者的電腦和手機(jī)鸣皂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)暮蹂,“玉大人寞缝,你說(shuō)我怎么就攤上這事⊙鲂海” “怎么了荆陆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)集侯。 經(jīng)常有香客問(wèn)我被啼,道長(zhǎng),這世上最難降的妖魔是什么棠枉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任浓体,我火速辦了婚禮,結(jié)果婚禮上术健,老公的妹妹穿的比我還像新娘汹碱。我一直安慰自己,他們只是感情好荞估,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布咳促。 她就那樣靜靜地躺著,像睡著了一般勘伺。 火紅的嫁衣襯著肌膚如雪跪腹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天飞醉,我揣著相機(jī)與錄音冲茸,去河邊找鬼屯阀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛轴术,可吹牛的內(nèi)容都是我干的难衰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逗栽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盖袭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起彼宠,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鳄虱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后凭峡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拙已,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年摧冀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了倍踪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡按价,死狀恐怖惭适,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情楼镐,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布往枷,位于F島的核電站框产,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏错洁。R本人自食惡果不足惜秉宿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屯碴。 院中可真熱鬧描睦,春花似錦、人聲如沸导而。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)今艺。三九已至韵丑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虚缎,已是汗流浹背撵彻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人陌僵。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓轴合,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親碗短。 傳聞我的和親對(duì)象是個(gè)殘疾皇子受葛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容