Fungsi http_build_query() di PHP digunakan untuk menghasilkan string kueri berkode URL (URL-encoded query string) dari array asosiatif atau berindeks. Fungsi ini sangat krusial ketika Anda perlu mengirimkan data melalui metode HTTP GET ke URL lain atau membangun payload untuk permintaan POST berbasis form (application/x-www-form-urlencoded).
Sintaks dasar dari fungsi ini adalah http_build_query(mixed $data, string $numeric_prefix = "", ?string $arg_separator = null, int $encoding_type = PHP_QUERY_RFC1738): string. Dengan menggunakan fungsi ini, Anda tidak perlu lagi menggabungkan string secara manual yang rentan terhadap kesalahan pengkodean karakter khusus.
Sintaks dan Parameter Utama
Memahami parameter dalam http_build_query memungkinkan Anda mengontrol bagaimana data array dikonversi menjadi string kueri secara presisi.
| Parameter | Tipe Data | Keterangan |
|---|---|---|
data |
array|object | Array atau objek yang berisi data yang akan diubah menjadi query string. Dapat berupa array multidimensi. |
numeric_prefix |
string | Awalan yang digunakan jika array dasar menggunakan indeks numerik dan diletakkan di tingkat pertama. |
arg_separator |
string|null | Pemisah argumen yang digunakan. Defaultnya adalah & (atau sesuaiphp.ini arg_separator.output). |
encoding_type |
int | Konvensi pengkodean: PHP_QUERY_RFC1738 (default, spasi menjadi +) atau PHP_QUERY_RFC3986 (spasi menjadi %20). |
Contoh Penggunaan Dasar
Berikut adalah contoh implementasi paling sering digunakan untuk mengubah array asosiatif sederhana menjadi string kueri URL.
<?php
$data = [
'nama' => 'Budi Santoso',
'kota' => 'Jakarta',
'usia' => 25
];
$queryString = http_build_query($data);
echo $queryString;
// Output: nama=Budi+Santoso&kota=Jakarta&usia=25
?>
Menangani Array Multidimensi
http_build_query() secara otomatis mendukung array multidimensi atau array bersarang (nested array). Struktur ini secara otomatis diterjemahkan ke dalam format braket siku [] yang standar dalam pemrosesan PHP.
<?php
$data = [
'user' => [
'id' => 42,
'role' => 'admin'
],
'hobi' => ['membaca', 'coding']
];
echo http_build_query($data);
// Output: user%5Bid%5D=42&user%5Brole%5D=admin&hobi%5B0%5D=membaca&hobi%5B1%5D=coding
?>
Penggunaan RFC 3986 untuk Karakter Spasi
Secara default, PHP menggunakan standar RFC 1738 di mana spasi dikodekan sebagai tanda tambah (+). Jika API pihak ketiga yang Anda tuju memerlukan spasi dikodekan sebagai %20, gunakan parameter keempat PHP_QUERY_RFC3986.
<?php
$data = ['pesan' => 'Halo dunia, apa kabar?'];
// Menggunakan RFC 3986
$query = http_build_query($data, '', '&', PHP_QUERY_RFC3986);
echo $query;
// Output: pesan=Halo%20dunia%2C%20apa%20kabar%3F
?>
Tips Troubleshooting Lapangan
Beberapa masalah umum yang sering ditemui saat menggunakan fungsi ini:
- Data Kosong: Jika array bernilai kosong (
[]), fungsi akan mengembalikan string kosong (""). Pastikan Anda memberikan pengecekan kondisi sebelum menggabungkannya ke URL utama. - Decoding Otomatis: Sisi penerima (misalnya
$_GETdi PHP atau server tujuan) akan secara otomatis melakukan URL decode terhadap string yang dihasilkan olehhttp_build_query(), sehingga Anda tidak perlu mendekodenya secara manual. - Objek sebagai Parameter: Objek publik dapat diteruskan ke fungsi ini, namun properti privat atau protected tidak akan disertakan dalam hasil konversi string kueri.