想封裝一個功能類似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的參數值是這樣的:
沒有中括號表示參數不可省略,同時他也支援只填一個參數的寫法並預設以空字串作為$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的參數值是這樣的:
沒有中括號表示參數不可省略,同時他也支援只填一個參數的寫法並預設以空字串作為$glue的值。雖然有說明是因為歷史原因,我仍想知道該系統函數函數是如何實現的。
函數重載。 。 。
http://m.blog.csdn.net/articl...
如果你一定要實現這個效果的話,可以使用php的可變參數數量的宣告方法。參見
http://php.net/manual/zh/func...
把參數取得到陣列裡,透過分析陣列來處理。