首頁  >  文章  >  後端開發  >  join函數是如何做到前面的參數可省略的?

join函數是如何做到前面的參數可省略的?

WBOY
WBOY原創
2016-10-10 11:56:111238瀏覽

想封裝一個功能類似join(implode的別名)的函數,程式碼如下:

<code><?php
#封装函数:join
$arr = array('jack','male',23);
function getJoin($glue="",$arr){
    $str ="";
    foreach ($arr as $key => $value) {
        $str .= $value.$glue;
    }
    $str = substr($str, 0,-1);
    return $str;
}
echo getJoin(",",$arr);</code>

這樣寫的話看起來是跟系統函數join差不多,但如果呼叫時$glue參數不填,就會報錯。

我知道有預設值的參數應該放在後面,例如getJoin($arr,$glue=""),這樣呼叫就可以只填$arr參數,但是我看了下手冊,系統函數join的參數值是這樣的:

join函數是如何做到前面的參數可省略的?

沒有中括號表示參數不可省略,同時他也支援只填一個參數的寫法並預設以空字串作為$glue的值。雖然有說明是因為歷史原因,我仍想知道該系統函數函數是如何實現的。

回覆內容:

想封裝一個功能類似join(implode的別名)的函數,程式碼如下:

<code><?php
#封装函数:join
$arr = array('jack','male',23);
function getJoin($glue="",$arr){
    $str ="";
    foreach ($arr as $key => $value) {
        $str .= $value.$glue;
    }
    $str = substr($str, 0,-1);
    return $str;
}
echo getJoin(",",$arr);</code>

這樣寫的話看起來是跟系統函數join差不多,但如果呼叫時$glue參數不填,就會報錯。

我知道有預設值的參數應該放在後面,例如getJoin($arr,$glue=""),這樣呼叫就可以只填$arr參數,但是我看了下手冊,系統函數join的參數值是這樣的:

join函數是如何做到前面的參數可省略的?

沒有中括號表示參數不可省略,同時他也支援只填一個參數的寫法並預設以空字串作為$glue的值。雖然有說明是因為歷史原因,我仍想知道該系統函數函數是如何實現的。

函數重載。 。 。
http://m.blog.csdn.net/articl...

如果你一定要實現這個效果的話,可以使用php的可變參數數量的宣告方法。參見
http://php.net/manual/zh/func...
把參數取得到陣列裡,透過分析陣列來處理。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn