JSON sang mảng PHP
Dán một tài liệu JSON để nhận về một literal mảng PHP được định dạng cho tệp nguồn .php: cú pháp mảng ngắn ([...]), thụt lề đúng, các chuỗi được đặt trong dấu nháy chính xác, các đối tượng lồng nhau trở thành mảng liên kết và các mảng vẫn giữ dạng có chỉ mục. Hữu ích khi nhúng fixture API vào bài kiểm thử hoặc tạo dữ liệu ban đầu cho các tệp cấu hình.
Cách chuyển JSON sang PHP
-
1
Dán JSON
Bất kỳ JSON hợp lệ nào: đối tượng, mảng, lồng sâu.
-
2
Chọn cú pháp
Ngắn `[...]` (PHP 5.4+) hoặc dài `array(...)` (hiện nay hiếm khi cần).
-
3
Chọn kiểu dấu nháy cho chuỗi
Dấu nháy đơn (không nội suy, thoát dấu nháy đơn) hoặc dấu nháy kép (cho phép nội suy `$`: thường không phù hợp với dữ liệu).
-
4
Sao chép mảng
Dán vào tệp `.php` của bạn, gán cho `return`, hoặc bao trong `config([...])`.
Ví dụ
Đầu vào:
{ "app": { "name": "Hyperion", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }
Kết quả (cú pháp ngắn, dấu nháy đơn):
[
'app' => [
'name' => 'Hyperion',
'debug' => true,
'hosts' => [
'h1.example.com',
'h2.example.com',
],
],
]
Ánh xạ kiểu dữ liệu
| JSON | PHP |
|---|---|
| chuỗi | chuỗi (dấu nháy đơn) |
| số nguyên | int |
| số (thập phân) | float |
| boolean | true / false |
| null | null |
| mảng (JSON) | mảng có chỉ mục |
| đối tượng (JSON) | mảng liên kết |
Khi nào dùng mảng liên kết so với mảng có chỉ mục
PHP chỉ có một kiểu mảng nhưng thể hiện cả hai hành vi. Trong khi đó, JSON phân biệt rõ đối tượng và mảng, nên ánh xạ như sau:
{}→ mảng liên kết (['key' => value]).[]→ mảng có chỉ mục ([value, value]).
Bộ tạo luôn giữ nguyên sự phân biệt này; việc trộn lẫn hai kiểu trong PHP là hợp lệ nhưng dễ gây nhầm lẫn.
Những điểm cần lưu ý riêng của PHP
- Khóa dạng chuỗi số. PHP ép
"42"thành khóa số nguyên42trong mảng. Nếu JSON của bạn dùng chuỗi số làm khóa và bạn cần giữ chúng ở dạng chuỗi, quá trình chuyển đổi qua lại bằngarray_combinesẽ không bảo toàn được. - Số nguyên lớn. JSON có thể chứa số nguyên lớn hơn
PHP_INT_MAXtrên các bản dựng 32 bit. Bộ tạo sẽ cảnh báo khi điều đó có thể xảy ra. - UTF-8. Chuỗi PHP là dãy byte; bộ tạo xuất UTF-8 theo đúng nguyên bản. Hãy đảm bảo tệp
.phpcủa bạn được lưu ở dạng UTF-8 không có BOM.
Các trường hợp sử dụng
- Tệp cấu hình. Cả Laravel và Symfony đều dùng cấu hình dạng mảng PHP. Việc chuyển một cấu hình JSON theo kiểu nhà cung cấp hoạt động tốt.
- Fixture kiểm thử. Fixture của
PHPUnitgọn gàng hơn khi ở dạng mảng so với các tệp JSON được nạp lúc chạy. - Seeder. Seeder cơ sở dữ liệu trong Laravel thường bắt đầu từ một bản dump JSON rồi trở thành mảng PHP.
Các lỗi thường gặp
- Chuyển mảng PHP ngược lại thành JSON.
json_encodecoi mảng liên kết là đối tượng và mảng có chỉ mục là mảng. Nếu bạn trộn chúng (['key' => 'val', 0 => 'x']), đầu ra sẽ là một đối tượng. Hãy giữ các mảng có dạng JSON ở dạng JSON. - Dấu nháy kép với dấu nháy đơn. Chuỗi PHP trong dấu nháy đơn cần thoát
\'; chuỗi trong dấu nháy kép cần thoát\\", và biến có thể bị nội suy ngoài ý muốn nếu bạn không cẩn thận. Hãy dùng dấu nháy đơn cho dữ liệu. - Quên dấu phẩy ở cuối. PHP cho phép chúng từ PHP 7.3 và chúng giúp diff sạch hơn. Bộ tạo thêm chúng theo mặc định.
Câu hỏi thường gặp
Cú pháp ngắn ([...]) đã có từ PHP 5.4 và là lựa chọn chuẩn mực cho mọi mã hiện đại. Cú pháp dài (array(...)) chỉ cần cho mã phải chạy trên PHP 5.3 trở về trước, về cơ bản là các hệ thống cũ.
Có. Tệp cấu hình Laravel là các mảng PHP thông thường được trả về từ một tệp. Dán kết quả của bộ tạo sau return và lưu vào thư mục config/.
Chuỗi PHP trong dấu nháy đơn không nội suy biến hay chuỗi thoát (ngoại trừ \' và \\). Với literal dữ liệu, cách này nhanh và an toàn hơn. Dấu nháy kép chỉ quan trọng khi bạn muốn có \n, \t hoặc $variable bên trong chuỗi.
Không, nó xuất ra một literal mảng. Bạn hãy tự bao nó bằng return, const hoặc một thuộc tính lớp khi cần. Giữ đầu ra nhỏ gọn giúp dễ kết hợp.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Bảng tra cứu nhanh Markdown
Tài liệu Markdown thực dụng với bản xem trước thực tế và ví dụ có thể sao chép cho tiêu đề, danh sách, bảng, mã, liên kết, hình ảnh và cú pháp GFM.
Trình định dạng HTML
Định dạng HTML cục bộ trong trình duyệt với thụt lề hai hoặc bốn khoảng trắng. HTML không được tải lên hoặc xác thực.
Công cụ xác thực số điện thoại
Kiểm tra cấu trúc số theo quốc gia và xem khu vực, loại số cùng các định dạng E.164, quốc tế, quốc gia và RFC 3966.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- JSON vers tableau PHP [FR]
- JSON till PHP-array [SV]
- JSON เป็น PHP Array [TH]
- تحويل JSON إلى مصفوفة PHP [AR]
- JSON ke Array PHP [ID]
- JSON을 PHP 배열로 변환 [KO]
- JSON zu PHP-Array [DE]
- JSON a Array de PHP [ES]
- JSON naar PHP-array [NL]
- JSON do tablicy PHP [PL]
- JSONからPHP配列へ [JA]
- JSON para Array PHP [PT]
- JSON в массив PHP [RU]
- JSON'dan PHP dizisine [TR]
- 从 JSON 到 PHP 数组 [ZH]
- JSON to PHP Array [EN]
- JSON in array PHP [IT]