# Array PHP dan JSON: cara pemetaan, dan apa yang sebenarnya dibaca penukar ini

> Penjelasan teruji tentang halaman ini: langkah penulisan semula teks di sebalik PHP ke JSON, input yang berjaya dan yang gagal, bahaya escape dalam output JSON ke PHP, dan peraturan sebelah PHP (json_encode, json_decode, var_export) yang digunakan apabila ketepatan penting.

- Tool: [Penukar PHP Array JSON](https://toolsg.com/ms/php-array-json-converter)
- Language: ms (available: en, zh, ms, ta)
- Last verified against official sources: 2026-10-19
- Source site: ToolSG — a planning guide, not official or financial advice. Cite the agencies listed under Sources.

## Angka utama sepintas lalu

| Perkara | Nilai | Sumber |
| --- | --- | --- |
| Input PHP ke JSON yang berfungsi | Senarai sintaks pendek dan teks seperti JSON — Contohnya ['a','b'], [1,2,3,] dan [[1,2],[3]]. Teks JSON biasa juga lulus. |  |
| Input PHP ke JSON yang gagal | Apa-apa dengan => atau array( ... ) — Halaman menukar => kepada titik dua dan array( kepada [ tetapi tidak pernah kurungan penutup, jadi tatasusunan kunci/nilai dan array() ditolak sebagai tidak sah. |  |
| Output JSON ke PHP | Rentetan petikan berganda, inden 4 ruang, => untuk objek — Hanya petikan berganda yang di-escape dalam rentetan; $ atau garis condong terbalik dalam data tidak. |  |
| Pilihan var_export | Tidak mengubah apa-apa — Output sama ada kotak ditanda atau tidak, dan bukan format sebenar var_export. |  |

## Menukar array PHP kepada JSON dengan boleh dipercayai

Biar PHP menghurai PHP; gunakan halaman untuk bahagian JSON.

1. **Kodkan dalam PHP** — Jalankan json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) dalam skrip atau REPL anda sendiri.
2. **Semak JSON** — Tampal hasilnya ke pengesah untuk mengesahkan ia boleh dihurai dan melihat ralat khusus kedudukan. Alat: [Pengesah JSON](https://toolsg.com/ms/json-validator)
3. **Format semula jika perlukan gaya lain** — Gunakan pemformat untuk inden 4 ruang atau tab, atau pemadat untuk satu baris. Alat: [Pemformat & Peminimum JSON](https://toolsg.com/ms/json-formatter), [Peminimum JSON](https://toolsg.com/ms/json-minify)

## Apa yang sebenarnya dilakukan halaman ini

Tiada arah menggunakan penghurai PHP. Kedua-duanya berjalan dalam pelayar dan tiada yang memuat naik apa-apa, tetapi arah PHP ke JSON ialah rantaian pendek penggantian teks diikuti `JSON.parse`:

1. Pangkas teks dan padam sebarang `<?php` dan `?>`.
2. Gantikan setiap `array(` dengan `[`. `)` yang berpadanan tidak disentuh.
3. Gantikan setiap `=>` dengan `:`.
4. Gantikan setiap petikan tunggal `'` dengan petikan berganda `"`.
5. Padam koma yang berada sebelum `]` atau `}` penutup.
6. Hurai sebagai JSON dan cetak, cantik (2 ruang) atau padat.

Apa sahaja yang selamat melalui saluran itu sebagai JSON sah akan ditukar; selainnya gagal dengan "Ralat penukaran: Sintaks PHP array tidak sah: …" diikuti mesej JSON pelayar. Selepas kegagalan kotak output tidak dikosongkan, jadi ia mungkin masih menunjukkan hasil larian terdahulu. Baca baris status merah, bukan kotak itu.

## Apa yang berjaya ditukar dan apa yang tidak

Keputusan di bawah diperoleh dengan menjalankan halaman.

| Input PHP | Hasil |
| --- | --- |
| `['a','b','c']` | berfungsi: `["a","b","c"]` |
| `[1, 2, 3,]` | berfungsi: `[1,2,3]` (koma hujung dibuang) |
| `[true, false, null]` | berfungsi |
| `[[1,2],[3]]` | berfungsi |
| `{"a":1}` (sudah JSON) | berfungsi: tiada apa perlu ditulis semula |
| `['name'=>'Mei','age'=>30]` | gagal: menjadi `["name":"Mei","age":30]`, yang bukan JSON |
| `array('a','b')` | gagal: menjadi `["a","b")` |
| `['it\'s']` | berjaya ditukar, tetapi salah: hasilnya `it"s` |
| `["it's"]` | gagal: apostrof menjadi petikan tidak berpasangan |
| `[TRUE, NULL]` | gagal: pemalar PHP tidak peka huruf besar, literal JSON peka |
| `$x = [1];`, `return [1,2];`, `[1,2]; // note` | gagal: pernyataan, koma bertitik dan komen tidak difahami |
| `[1=>'a', 2=>'b']`, `[0x1F, 010]` | gagal |

Dalam amalan, arah PHP ke JSON hanya mengendalikan senarai biasa dan teks yang kelihatan seperti JSON. Penerangan dan FAQ halaman sendiri mendakwa lebih daripada ini; jangan bergantung padanya untuk tatasusunan bersekutu.

## Output JSON ke PHP

Arah ini menghurai JSON dengan betul, kemudian mencetak kod sumber PHP. Output yang disahkan untuk `{"a":1,"b":[1,2],"c":{"d":null}}`:

```php
[
    "a" => 1,
    "b" => [
        1,
        2
    ],
    "c" => [
        "d" => null
    ]
]
```

Tatasusunan JSON menjadi senarai, objek JSON menjadi `"key" => value`, dan `{}` menjadi `[]`. Nyahtanda sintaks pendek untuk mendapat `array(` … `)`. Tiada awalan `$var =`, tiada koma bertitik di hujung dan tiada koma di hujung, jadi tambahkan sendiri. Tiga bahaya timbul kerana rentetan ditulis dalam petikan berganda PHP dengan hanya `"` yang di-escape:

- **Interpolasi pemboleh ubah**: rentetan JSON `"cost: $price"` menjadi `"cost: $price"` dalam PHP, di mana `$price` digantikan dengan nilai pemboleh ubah (atau amaran pemboleh ubah tidak ditakrifkan). Begitu juga `{$x}`.
- **Garis condong terbalik**: nilai JSON `back\nslash` (garis condong terbalik sebenar diikuti n, ditulis `"back\\nslash"` dalam JSON) dicetak sebagai `"back\nslash"`, yang dibaca PHP sebagai baris baharu. Pemisah baris mentah disalin secara literal, yang tidak mengapa.
- **Kunci** diberi petikan tetapi tidak di-escape, jadi kunci yang mengandungi `"` menghasilkan PHP tidak sah.

Nombor menggunakan format JavaScript: `1.0` menjadi `1` (int, bukan float), `1e21` menjadi `1e+21`, `12345678901234567890` menjadi `12345678901234567000`. Kotak tanda var_export tidak mengubah apa-apa. `var_export` sebenar mencetak rentetan petikan tunggal, `array (` dengan ruang, kunci eksplisit untuk senarai (`0 => 1,`), `NULL` huruf besar dan koma di hujung.

## Peraturan sebelah PHP yang berguna

Disemak dengan PHP 8.3:

| PHP | JSON |
| --- | --- |
| `[1,2,3]` | `[1,2,3]` |
| `['a'=>1]` | `{"a":1}` |
| `[1=>'a',2=>'b']` | `{"1":"a","2":"b"}` (kunci bukan 0..n-1) |
| `[0=>'a',1=>'b']` | `["a","b"]` (kunci berturutan menjadikan senarai) |
| `[]` | `[]` (tatasusunan kosong tidak pernah `{}`; gunakan `new stdClass` untuk itu) |
| `1.0` | `1`, atau `1.0` dengan `JSON_PRESERVE_ZERO_FRACTION` |
| `"a/b é"` | `"a\/b é"` secara lalai; `"a/b é"` dengan `JSON_UNESCAPED_SLASHES \| JSON_UNESCAPED_UNICODE` |

`json_decode($json, true)` memulangkan tatasusunan bersekutu; tanpa `true` ia memulangkan objek `stdClass`. `{"1":"a","2":"b"}` dinyahkod kepada tatasusunan dengan kunci integer 1 dan 2, dan integer JSON melebihi `PHP_INT_MAX` seperti `12345678901234567890` dinyahkod kepada float. Koma di hujung menyebabkan `json_decode` memulangkan `NULL` dengan ralat "Syntax error".

> **Petua:** Untuk apa-apa yang akan anda commit atau jalankan, hasilkan kod sumber PHP dengan `var_export($data, true)` dalam PHP sendiri, dan JSON dengan `json_encode`. Gunakan halaman ini untuk senarai pantas dan melihat struktur.

## Kesilapan biasa

- Menampal `array('key' => 'value')` atau `['key' => 'value']` dan terkejut dengan ralat.
- Mempercayai kotak output selepas ralat; ia mungkin daripada penukaran terdahulu.
- Menampal output JSON ke PHP ke dalam kod tanpa menyemak rentetan yang mengandungi `$` atau garis condong terbalik.
- Menjangka `1.0` atau perbezaan `[]` berbanding `{}` kekal dalam pusingan penuh.

## Alat berkaitan

Sahkan atau bentuk semula JSON dengan [pengesah JSON](https://toolsg.com/ms/json-validator), [pemformat JSON](https://toolsg.com/ms/json-formatter) atau [pemapar JSON](https://toolsg.com/ms/json-viewer), dan ratakan kepada laluan dengan [JSON ke teks](https://toolsg.com/ms/json-to-text).

## Soalan lazim

**Bagaimana saya menukar PHP array kepada JSON?**

Pilih mod "PHP Array ke JSON", tampal kod PHP array anda (menggunakan sintaks [] atau array()), pilih format JSON pilihan anda (cantik atau padat) dan klik Tukar. Alat ini akan serta-merta menukar PHP array anda kepada format JSON yang sah.

**Bolehkah saya menukar JSON kembali kepada PHP array?**

Ya! Pilih mod "JSON ke PHP Array", tampal data JSON anda, pilih sintaks PHP pilihan anda (pendek [] atau tradisional array()) dan klik Tukar. Alat ini menyokong penukaran dua hala.

**Apakah perbezaan antara sintaks PHP array pendek dan tradisional?**

Sintaks pendek menggunakan tanda kurung siku [] dan tersedia dalam PHP 5.4+, manakala sintaks tradisional menggunakan array(). Contohnya: ["a" => 1] berbanding array("a" => 1). Kedua-duanya berfungsi sama, tetapi sintaks pendek lebih ringkas dan digunakan secara meluas dalam PHP moden.

**Adakah alat ini mengendalikan array bersarang?**

Ya, penukar ini menyokong sepenuhnya array dan objek bersarang pada apa-apa kedalaman. Ia mengendalikan struktur data kompleks dengan pelbagai tahap sarangan dengan betul.

**Adakah jenis data dikekalkan semasa penukaran?**

Ya, alat ini mengekalkan string, nombor, boolean (true/false) dan nilai null semasa penukaran. Associative arrays menjadi objek JSON, manakala numeric indexed arrays menjadi JSON arrays.

**Adakah data saya dihantar ke pelayan?**

Tidak, semua penukaran berlaku sepenuhnya dalam pelayar anda. Data anda tidak pernah meninggalkan peranti anda, menjadikan alat ini selamat sepenuhnya untuk maklumat sensitif seperti API keys atau data konfigurasi.

**Apakah itu format var_export?**

var_export ialah fungsi PHP yang menghasilkan representasi string boleh dihuraikan bagi sesuatu pemboleh ubah. Pilihan ini menjana kod PHP dalam format tepat seperti yang dikeluarkan oleh fungsi var_export() milik PHP, yang berguna untuk penjanaan kod dan penyahpepijatan.

**Bolehkah saya menggunakan alat ini untuk JSON atau PHP array yang besar?**

Ya, alat ini boleh mengendalikan struktur data yang besar. Namun, fail yang sangat besar (beberapa megabait) mungkin mengambil masa lebih lama untuk diproses bergantung pada prestasi pelayar dan peranti anda.

**Apa yang berlaku jika PHP array atau JSON saya tidak sah?**

Alat ini akan mengesahkan input anda dan memaparkan mesej ralat khusus yang menunjukkan punca masalah, membantu anda mengenal pasti dan membaiki ralat sintaks dengan cepat.

**Bolehkah saya memuat turun output yang telah ditukar?**

Ya, gunakan butang Muat Turun untuk menyimpan output yang telah ditukar sebagai fail .json (untuk output JSON) atau fail .php (untuk output PHP array).

**Mengapa saya perlu menukar antara PHP dan JSON?**

Kegunaan biasa termasuk menukar respons API untuk digunakan dalam aplikasi PHP, menjana data ujian PHP daripada JSON fixtures, mencipta fail konfigurasi, migrasi data antara sistem dan menyediakan contoh dokumentasi.

**Adakah JSON cetak cantik menjejaskan data?**

Tidak, cetak cantik hanya menambah ruang kosong (ruang dan baris baharu) untuk kebolehbacaan. Struktur dan nilai data sebenar kekal sama dengan JSON padat. Satu-satunya perbezaan ialah saiz fail dan kemudahan pembacaan manusia.


## Sumber rujukan

- [PHP manual — json_encode](https://www.php.net/manual/en/function.json-encode.php) — Lists versus objects, escaping flags, float handling.
- [PHP manual — json_decode](https://www.php.net/manual/en/function.json-decode.php) — Objects as stdClass or associative arrays, big integers.
- [PHP manual — var_export](https://www.php.net/manual/en/function.var-export.php) — The real output format of var_export.
- [PHP manual — Strings](https://www.php.net/manual/en/language.types.string.php) — Variable interpolation and escape sequences in double-quoted strings.
- [IETF — RFC 8259, The JSON Data Interchange Format](https://www.rfc-editor.org/rfc/rfc8259.html)
