implode($separator, $array) menggabungkan nilai-nilai array menjadi satu string, dengan $separator di antara setiap pasangan: implode(', ', ['red', 'green', 'blue']) mengembalikan "red, green, blue".
Pemisah hanya diletakkan di antara elemen, tidak pernah sebelum elemen pertama atau setelah elemen terakhir. Fungsi ini kebalikan dari explode(), yang memecah string menjadi array.
Sintaks
implode(string $separator, array $array): string
implode(array $array): string // separator defaults to ""
Pemisahnya ditulis lebih dulu. Kode lama kadang menaruh array di depan, implode($array, ', '). Urutan itu sudah deprecated di PHP 7.4 dan dihapus di PHP 8.0, yang kini melempar TypeError: implode(): Argument #2 ($array) must be of type ?array, string given.
implode vs join
join() adalah alias dari implode(). Keduanya menerima argumen yang sama dan mengembalikan string yang sama, jadi pilih salah satu dan pakai secara konsisten.
Apa yang terjadi pada angka, boolean, dan null
Setiap nilai dikonversi menjadi string lebih dulu. Angka dicetak seperti yang kamu harapkan, true menjadi "1", dan false serta null menjadi string kosong, sehingga ada dua pemisah berturut-turut.
Implode pada array asosiatif
implode() mengabaikan key dan hanya menggabungkan nilainya. Untuk mendapatkan pasangan key=value, susun setiap potongan dengan array_map() atas key dan value, lalu gabungkan. http_build_query() melakukan hal yang sama untuk query string URL dan juga meng-encode spasi serta karakter khusus.
Pola yang sama bisa menggabungkan key-nya saja: implode(', ', array_keys($user)). Penjelasan lebih lanjut tentang key dan value ada di halaman array asosiatif.
Menggabungkan dengan newline atau membuat list HTML
Pemisahnya bisa berupa string apa pun. "\n" (tanda kutip ganda) menaruh setiap nilai di barisnya sendiri, yang berguna untuk file teks dan output command line. Dengan tag HTML sebagai pemisah, implode() membuat list dalam satu baris. Jalankan blok berikut dan tab Halaman menampilkan list yang sudah dirender.
Melakukan escape pada setiap nilai dengan htmlspecialchars() sebelum digabungkan mencegah nilai seperti <b> berubah menjadi markup.
Menggabungkan dengan "and" sebelum item terakhir
List yang enak dibaca manusia biasanya butuh kata penghubung seperti "and" sebelum elemen terakhir. Ambil elemen terakhir dengan pop, gabungkan sisanya, lalu tambahkan kembali:
Kesalahan umum: array bersarang
implode() bekerja pada satu level. Elemen yang juga berupa array dikonversi menjadi kata Array, dan PHP mencetak warning:
<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array
Ratakan dulu array di dalamnya, atau gabungkan masing-masing secara terpisah:
Pertanyaan yang sering diajukan
Apa fungsi implode() di PHP?
Fungsi ini menggabungkan nilai-nilai array menjadi satu string, dengan pemisah di antaranya: implode(', ', ['a', 'b', 'c']) mengembalikan "a, b, c". Ini kebalikan dari explode().
Apa perbedaan implode() dan join()?
Tidak ada. join() adalah alias dari implode(): argumennya sama, hasilnya sama. implode() adalah nama yang akan kamu temui di sebagian besar kode.
Bagaimana cara melakukan implode pada array asosiatif beserta key-nya?
implode() hanya memakai nilainya. Untuk menyertakan key, susun potongan-potongannya lebih dulu: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). Untuk query string URL, http_build_query($a) melakukannya dalam satu panggilan.
Kenapa implode() menghasilkan TypeError di PHP 8?
Karena argumennya ditulis dengan urutan lama. implode($array, ', ') sudah deprecated di PHP 7.4 dan dihapus di PHP 8.0. Tulis pemisahnya lebih dulu: implode(', ', $array).
Bagaimana cara mengubah array menjadi string yang dipisahkan koma di PHP?
implode(',', $array). Pakai ', ' sebagai pemisah jika kamu ingin ada spasi setelah setiap koma. Untuk file CSV, pakai fputcsv(), yang juga memberi tanda kutip pada nilai yang berisi koma.