JSON ke Array PHP

Tempelkan dokumen JSON untuk memperoleh array PHP dalam format yang sesuai dengan file sumber .php: sintaks array singkat ([...]), indentasi yang benar, string yang dikutip secara tepat, objek bersarang menjadi array asosiatif, serta array yang tetap terindeks. Fitur ini sangat berguna untuk menyisipkan fixture API dalam pengujian atau sebagai data awal untuk berkas konfigurasi.

Cara Mengonversi JSON ke PHP

  1. 1

    Lampirkan JSON

    Semua JSON yang valid, objek, array, dan struktur yang terletak dalam tata letak yang kompleks (deeply nested).

  2. 2

    Pilih sintaks

    Versi pendek `[...]` (untuk PHP 5.4+) atau versi panjang `array(...)` (kini jarang digunakan).

  3. 3

    Pilih kutipan string

    Tanda kutip tunggal (tanpa interpolasi dan menggunakan tanda kutip pelarian) atau tanda kutip ganda (memungkinkan interpolasi `$`, biasanya bukan hal yang diinginkan untuk data).

  4. 4

    Salin array tersebut

    Lampirkan ke dalam berkas `.php` Anda, atur ke `return`, atau balut dengan `config([...])`.

Contoh

Masukan:

{ "app": { "name": "Hyperion", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }

Hasil (sintaks singkat, tanda kutip tunggal):

[
    'app' => [
        'name' => 'Hyperion',
        'debug' => true,
        'hosts' => [
            'h1.example.com',
            'h2.example.com',
        ],
    ],
]

Pemetaan Tipe

JSON PHP
string string (dikelilingi tanda kutip tunggal)
bilangan bulat int
angka (desimal) float
boolean true / false
null null
array (JSON) array terindeks
objek (JSON) array asosiatif

Kapan menggunakan array asosiatif dibandingkan array terindeks

PHP memiliki satu tipe array yang menunjukkan kedua perilaku tersebut. JSON secara jelas membedakan antara objek dan array; oleh karena itu, pemetaannya adalah sebagai berikut:

  • {} → array asosiatif (['key' => value]).
  • [] → array terindeks ([value, value]).

Generator selalu mempertahankan perbedaan tersebut; mencampur keduanya dalam PHP merupakan hal yang sah, tetapi dapat menimbulkan kebingungan.

Perangkap khusus PHP

  • Kunci berupa string numerik: PHP mengubah nilai "42" menjadi kunci bilangan bulat 42 dalam sebuah array. Jika JSON Anda menggunakan string numerik sebagai kunci dan Anda memerlukan bentuk string tersebut, proses konversi bolak-balik (round-trip) untuk array_combine tidak akan mempertahankan bentuk string tersebut.
  • Angka bulat besar: JSON dapat menyimpan angka bulat yang lebih besar dari PHP_INT_MAX pada versi 32-bit. Generator akan memberikan peringatan ketika hal tersebut terjadi.
  • UTF-8: String dalam PHP merupakan urutan byte; generator menghasilkan data dalam format UTF-8 secara harfiah. Pastikan file .php Anda disimpan dalam format UTF-8 tanpa BOM.

Kasus Penggunaan

  • File konfigurasi: Baik Laravel maupun Symfony menggunakan konfigurasi berbasis array dalam PHP. Penggunaan konfigurasi berformat JSON ala vendor juga dapat digunakan dengan baik.
  • Fixture pengujian: fixture PHPUnit lebih bersih dalam bentuk array dibandingkan file JSON yang dimuat saat eksekusi.
  • Seeder: seeder basis data di Laravel umumnya dimulai dari hasil dump berformat JSON dan kemudian diubah menjadi array PHP.

Kesalahan Umum

  • Mengonversi array PHP kembali menjadi JSON. json_encode memperlakukan array asosiatif sebagai objek, sedangkan array terindeks sebagai array biasa. Jika keduanya digabungkan (['key' => 'val', 0 => 'x']), hasilnya akan berupa objek. Pertahankan array berbentuk JSON tetap dalam bentuk JSON.
  • Tanda kutip ganda dengan apostrof. String PHP dalam tanda kutip tunggal memerlukan escape \'; string dalam tanda kutip ganda memerlukan escape \\", dan variabel dapat terinterpolasi secara tidak sengaja jika tidak berhati-hati. Gunakan tanda kutip tunggal untuk data.
  • Melupakan koma di akhir. PHP mengizinkannya sejak versi 7.3, dan hal ini membuat hasil perbandingan kode (diff) lebih rapi. Generator menambahkannya secara default.

Pertanyaan yang Sering Diajukan

Sintaks singkat ([...]) telah tersedia sejak PHP 5.4 dan merupakan pilihan yang paling sesuai untuk semua kode modern. Sintaks panjang (array(...)) hanya diperlukan untuk kode yang harus dijalankan pada PHP 5.3 atau versi sebelumnya, yakni sistem lama.

Ya. File konfigurasi Laravel merupakan array PHP biasa yang diambil dari sebuah file. Tempelkan hasil keluaran generator setelah return, lalu simpannya di config/.

String PHP yang menggunakan tanda kutip tunggal tidak melakukan interpolasi terhadap variabel maupun urutan pelarian (kecuali \' dan \\). Untuk literal data, pendekatan ini lebih cepat dan lebih aman. Tanda kutip ganda hanya diperlukan jika Anda ingin menampilkan nilai \n, \t, atau $variable di dalam string.

Tidak, komponen ini menghasilkan nilai literal berupa array. Anda dapat membungkusnya sendiri menggunakan return, const, atau properti kelas sesuai kebutuhan. Dengan mempertahankan ukuran keluaran yang kecil, komponen tersebut tetap mudah disusun (komposabel).

Alat Terkait

Alat ini tersedia dalam bahasa lain