php 函數(shù)以前不知道的

可變變量

可以將變量的值作為一個變量的名稱,非常靈活,在邏輯復(fù)雜,層次清晰的場合中使用可變變量可以有效的減少代碼量杉适。

$txt = 'abc';
$$txt = "hello"; //等于 $abc = 'hello',這就是將變量$txt的值abc作為新的變量$abc并且賦值為hello
echo "$abc = ${$txt} = hello<br>";
//比如如果需要定義多個變量設(shè)置初值,很多語言不得不寫很多聲明賦值代碼,或者使用數(shù)組來實現(xiàn).
$vars = ['a' => '1','b'=>'2','c'=>'3','d'=>'4'];
foreach ($vars as $key => $value){
    ${$key} = $value;
}
echo $a.$b.$c.$d;//顯示1234

---------
hello = hello = hello
1234

可變函數(shù)

變量名后有圓括號,php會當(dāng)成函數(shù)去嘗試執(zhí)行,這同樣在邏輯復(fù)雜帶式調(diào)理清晰的復(fù)雜邏輯中能夠有效的精簡代碼。比如對于兩個數(shù)的運算怕膛,加減乘除,底數(shù)秦踪,對數(shù)褐捻,或者還有其他自定義運算的情況下。operate(a,b,op),表示對a,b進行op運算返回結(jié)果椅邓,可以將op寫成函數(shù)的名稱的字符串柠逞,然后直接return $op($a,$b),這里op相當(dāng)于C語言里面的函數(shù)指針,但是函數(shù)指針必須提前確定函數(shù)的參數(shù)類型和返回值景馁,php這里更為靈活板壮,直接將字符串當(dāng)成函數(shù)名,可變函數(shù)的使用避免了大量的if判斷。

function getName(){
    return 'func name'.'<br>';
}
function getGrade(){
    return "func grade"."<br>";
}
$func = "getName";
echo $func();
$func = "getGrade";
echo $func();
--------------
func name
func grade

可變參數(shù)列表

php5.6以后可以在參數(shù)面前加三個點 ...實現(xiàn)合住,php5.5之前使用獲取函數(shù)參數(shù)方法實現(xiàn)绰精,在C語言中需要使用va_list結(jié)構(gòu)實現(xiàn)

function sum (...$input){
    $s = 0;
    foreach ($input as $value) {
        $s+=$value;
    }
    return $s;
}
echo sum(1,2,3);
function sum2(){
    $arg_num = func_num_args();
    $sum = 0;
    if($arg_num == 0){
        return $sum;
    }else{
        for($i = 0;$i<$arg_num;$i++){
            $sum += func_get_arg($i);
        }
        return $sum;
    }
}
echo sum2(1,2,3);

嵌套函數(shù)

php嵌套函數(shù)撒璧,當(dāng)外部函數(shù)被調(diào)用時,內(nèi)部函數(shù)就會自動進入全局作用域笨使,成為新的定義函數(shù)沪悲。所以如果外部函數(shù)調(diào)用過后,就會再次嘗試定義內(nèi)部函數(shù)阱表,會造成錯誤殿如,所以應(yīng)該判斷內(nèi)部函數(shù)是否存在。

function out(){
    if(function_exists('in')){
         function in (){
            echo 'in';
        }
   }
}
out();
in();//直接調(diào)用會提示函數(shù)不存在最爬。
---
in

閉包函數(shù)

匿名函數(shù)(Anonymous functions)涉馁,也叫閉包函數(shù)(closures),允許 臨時創(chuàng)建一個沒有指定名稱的函數(shù)爱致。最經(jīng)常用作回調(diào)函數(shù)callback參數(shù)的值烤送。當(dāng)然,也有其它應(yīng)用的情況,比如讓一段代碼延遲執(zhí)行糠悯,擴大變量的作用域帮坚。

$message = "hello";
//使用use從父作用域集成變量
$closure = function ($name) use ($message) {
    echo $message ." ".$name;
};
$message = "11111";//如果想讓message可以改變,用 use(&$message)

$closure('world');

function replace_buy_count($data)
{
    return preg_replace_callback('#%buy_count%(-?\d+)%(-?\d+)%#',
        function ($matches) {
            return get_buy_count(toint($matches[1]), toint($matches[2]));
        }, $data);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市互艾,隨后出現(xiàn)的幾起案子试和,更是在濱河造成了極大的恐慌,老刑警劉巖纫普,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阅悍,死亡現(xiàn)場離奇詭異,居然都是意外死亡昨稼,警方通過查閱死者的電腦和手機节视,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來假栓,“玉大人寻行,你說我怎么就攤上這事∝揖#” “怎么了拌蜘?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棋凳。 經(jīng)常有香客問我拦坠,道長连躏,這世上最難降的妖魔是什么剩岳? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮入热,結(jié)果婚禮上拍棕,老公的妹妹穿的比我還像新娘晓铆。我一直安慰自己,他們只是感情好绰播,可當(dāng)我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布骄噪。 她就那樣靜靜地躺著,像睡著了一般蠢箩。 火紅的嫁衣襯著肌膚如雪链蕊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天谬泌,我揣著相機與錄音滔韵,去河邊找鬼。 笑死掌实,一個胖子當(dāng)著我的面吹牛陪蜻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贱鼻,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼宴卖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了邻悬?” 一聲冷哼從身側(cè)響起症昏,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎父丰,沒想到半個月后齿兔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡础米,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年分苇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屁桑。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡医寿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蘑斧,到底是詐尸還是另有隱情靖秩,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布竖瘾,位于F島的核電站沟突,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捕传。R本人自食惡果不足惜惠拭,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧职辅,春花似錦棒呛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秀鞭,卻和暖如春趋观,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锋边。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工拆内, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宠默。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓麸恍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搀矫。 傳聞我的和親對象是個殘疾皇子抹沪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,926評論 2 361

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