implode() 是 PHP 將陣列元素串聯為字串的核心函式,看似簡單卻藏著參數順序歷史包袱與型別轉換細節。本文從語法、參數、實例三維度徹底釐清。
implode(string $separator = '', array $array): string
// 歷史相容性支援:implode(array $array): string (不推薦)
| 參數 | 必要性 | 說明 |
|---|---|---|
$separator | 選填(建議必填) | 元素間分隔字串,預設空字串 ''。為相容舊版建議明確傳入。 |
$array | 必填 | 待串聯的陣列,元素會自動轉為字串。 |
implode() 同時支援 implode($glue, $pieces) 與 implode($pieces) 兩種順序,但 explode() 僅支援 explode($separator, $string)。**統一使用兩參數完整寫法**可避免維護混淆。
null → 空字串 ''。__toString(),否則拋出 Recoverable Error。Notice: Array to string conversion,結果為 'Array'。僅串聯「值」,關聯陣列的鍵名不會出現在結果中。
<?php
$arr = ['H', 'I', 'J', 'K!'];
// 自定分隔符
echo implode('m ', $arr); // Hm Im Jm K!
// 空格分隔
echo implode(' ', $arr); // H I J K!
// 無分隔符(預設行為)
echo implode('', $arr); // HIJK!
// 關聯陣列
$data = ['id' => 100, 'name' => 'Alice', 'active' => true];
echo implode(',', $data); // 100,Alice,1
// 空陣列
echo implode('-', []); // '' (空字串)
?>
implode() 內部優化優於迴圈 .= 操作。http_build_query() 產生 key=value&key2=value2。json_encode() 保留結構與型別,適合 API 傳輸。$separator,哪怕是空字串 ''。http_build_query() 或 json_encode()。掌握 implode() 細節,能寫出更健壯、可維護的字串組裝邏輯。