在編寫PHP程序時(shí),經(jīng)常需要將數(shù)組中的元素轉(zhuǎn)化為字符串,這時(shí)可以使用implode和join函數(shù)。這兩個函數(shù)的作用相同,都可以將數(shù)組中的元素合并為一個字符串,但在一些細(xì)節(jié)方面還是存在不同的。
使用implode函數(shù),將一個一維數(shù)組中的元素用指定的分隔符合并成一個字符串。例如:
$colors = array('red', 'green', 'blue'); $str = implode(',', $colors); echo $str; //輸出"red,green,blue"
在上面的例子中,我們定義了一個數(shù)組$colors,其中包含了三種顏色。將$colors作為implode函數(shù)的第一個參數(shù),分隔符為“,”作為第二個參數(shù)。函數(shù)的返回結(jié)果賦值給$str,最終輸出這個字符串。
與implode函數(shù)不同的是,join函數(shù)將分隔符作為第一個參數(shù),而將數(shù)組作為第二個參數(shù)。例如:
$colors = array('red', 'green', 'blue'); $str = join(',', $colors); echo $str; //輸出"red,green,blue"
代碼與使用implode函數(shù)的例子非常相似,唯一的區(qū)別是將參數(shù)的順序倒置了。使用join函數(shù)的返回結(jié)果與implode完全一致,但這個函數(shù)更符合其他語言中join的用法。
如果數(shù)組中有值為null的元素,使用implode函數(shù)會將其轉(zhuǎn)化為空白字符串。例如:
$names = array('Jack', 'Rose', null, 'Mike'); $str = implode(',', $names); echo $str; //輸出"Jack,Rose,,Mike"
在上面的例子中,$names數(shù)組中間有一個值為null的元素,使用implode函數(shù)時(shí)null會被轉(zhuǎn)化為空白字符串,不會有任何提示。這樣會對一些需要精確判斷數(shù)組內(nèi)容的程序造成一定的困擾。但使用join函數(shù)則不會出現(xiàn)這種問題,因?yàn)樗鼘ull值視作一個有效的元素:
$names = array('Jack', 'Rose', null, 'Mike'); $str = join(',', $names); echo $str; //輸出"Jack,Rose,,Mike"
在這個例子中,輸出的結(jié)果同樣為"Jack,Rose,,Mike"。但join函數(shù)實(shí)際上是將一個null元素和一個空字符串“”合并成了一個字符串。
總的來說,兩個函數(shù)在處理一維數(shù)組的字符串合并上是等效的。但在設(shè)計(jì)上,join函數(shù)更符合其他編程語言中join的用法,對處理null值的情況也更加友好。建議在實(shí)際程序中盡量使用join函數(shù)。