implode() 與 explode() 是 PHP 處理陣列與字串互轉的黃金搭檔,廣泛應用於 SQL 建構、標籤處理、路徑拼接、資料匯入匯出等場景。本文系統整理兩函數語法、參數細節、常見陷阱與實戰範例。
| 函數 | 用途 | 語法 | 返回值 |
|---|---|---|---|
implode() | 陣列 → 字串 | implode(string $separator, array $array): string | 以分隔符連接的字串 |
explode() | 字串 → 陣列 | explode(string $separator, string $string, int $limit = PHP_INT_MAX): array | 字串陣列 |
歷史別名:implode() 別名 join();explode() 無別名。
$tags = ['php', 'laravel', 'mysql', 'redis'];
$csv = implode(',', $tags); // "php,laravel,mysql,redis"
$sql = implode("', '", $tags); // "php', 'laravel', 'mysql', 'redis" 適合 SQL IN 子句
$path = implode('/', ['var', 'www', 'html']); // "var/www/html"
prepare($sql);
$stmt->execute($ids); // 參數綁定,防 SQL 注入
trim($p, '/'), $parts); $clean = array_filter($clean, fn($p) => $p !== ''); return implode('/', $clean); } echo build_path('https://example.com', 'api', 'v1', 'users'); // https://example.com/api/v1/users
implode($array, $glue),但 PHP 7.4+ 棄用、PHP 8.0+ 移除。永遠使用 implode($glue, $array)。explode('', $str) 拋出 ValueError(PHP 8.0+)或返回 false。若需逐字分割,用 str_split($str) 或 preg_split('//u', $str)(支援多位元組)。explode('、', '蘋果、香蕉、橘子') 正常;但 explode('', 'abc') 會按位元組分割導致亂碼。改用 mb_split() 或 preg_split()。implode(',', []) 返回 '',SQL 建構時需檢查 empty($array) 避免產生 IN () 語法錯誤。explode(',', 'a,b,') 返回 ['a', 'b', '']。處理時建議 array_filter($arr, 'strlen') 移除空元素。implode() 優於迴圈 .=(避免重複記憶體分配)sscanf() 或正則預編譯掌握 implode() / explode() 細節,能寫出更簡潔、安全、高效的 PHP 代碼。下次遇到陣列與字串互轉需求,請優先考慮這對經典組合。