2013-07-28 64 views
32

IMPLODE & JOIN這兩者的區別是什麼?IMPLODE&JOIN有什麼區別

<?php 
    $array = array(1,2,3); 

    echo join(",", $array); //output 1,2,3 
    echo implode(",", $array); //output 1,2,3 
?> 

使用一個在另一個之上有什麼優勢嗎?

+0

所以我可以使用任何方法。沒有這樣的問題,就像'JOIN'會將數組轉換成比其他數組更快的數組,反之亦然? –

+9

yes'JOIN'更快,它減少了3個字母;) – 2013-07-28 23:30:49

+2

使用「連接」,因爲它在大多數其他編程語言中更常見,因此使您的代碼更具可讀性。無論哪種方式都沒有性能優勢或劣勢,所以請隨便理解。 http://stackoverflow.com/a/36974284/467386 –

回答

79

它們是彼此的別名。他們理論上應該完全一樣。雖然使用爆炸/內爆已被證明可以將代碼的可怕程度提高10%

+2

10%是什麼? – NoBugs

+20

什麼都沒有。這只是一個很酷的因素。 – PlausibleSarge

+3

我認爲它不只是10% – Falk

3

想不出任何。一個是另一個的別名。它們都將數組元素組合成一個字符串。

11

加入:加入是implode()的別名。

實施例:

<?php 
$arr = array('Test1', 'Test2', 'Test3'); 
$str = join(",", $arr); 
echo $str; 
?> 

輸出:測試1,的Test2,Test3的。

Implode:implode從數組元素中返回一個字符串。

實施例:

<?php 
$arr = array('Test1', 'Test2', 'Test3'); 
$str = implode(",", $arr); 
echo $str; 
?> 

Output: Test1,Test2,Test3. 

UPDATE:

我在基準測試,並且它們在同一速度。我沒有看到彼此之間有任何區別

+0

@MarkBaker,你是對的。我現在用很多數組測試它,並且implode和join顯示同一時間執行。我錯了,我編輯了我的答案。非常感謝。 –

+1

問題與你的回答有什麼區別嗎? – Prasannjit

+1

這應該是正確的答案。連接將分隔符附加到最後一個元素,而implode不會。 –

5

join()implode()的別名,所以implode在理論上更多地是「PHP本地」,儘管使用它絕對沒有性能提升。

另一方面,join()可以在Perl,Python和ECMAScript(包括JavaScript)等語言中找到,因此在更廣泛的程序員讀者可理解性方面更具可移植性。

因此,儘管explodeimplode是無可爭議的方式更生動,我會投票給join以表達數組中的每個值的串聯成一個字符串一個更普遍的方式。