JSON do tablicy PHP
Wklej dokument JSON i otrzymaj literał tablicy PHP sformatowany dla pliku źródłowego .php: skrócona składnia tablic ([...]), poprawne wcięcia, poprawnie cytowane ciągi znaków, zagnieżdżone obiekty stają się tablicami asocjacyjnymi, a tablice pozostają indeksowane. Przydatne do osadzania fikstur API w testach lub do wypełniania plików konfiguracyjnych.
Jak przekształcić JSON w PHP
-
1
Wklej JSON
Dowolny prawidłowy JSON: obiekty, tablice, głęboko zagnieżdżone.
-
2
Wybierz składnię
Krótka `[...]` (PHP 5.4+) lub długa `array(...)` (obecnie rzadko potrzebna).
-
3
Wybierz rodzaj cudzysłowów dla ciągów
Pojedyncze cudzysłowy (bez interpolacji, apostrofy są ekranowane) lub podwójne cudzysłowy (umożliwiają interpolację `$`: zwykle nie jest to pożądane w przypadku danych).
-
4
Skopiuj tablicę
Wklej do pliku `.php`, przypisz do `return` lub opakuj w `config([...])`.
Przykład
Wejście:
{ "app": { "name": "MyApp", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }
Wynik (skrócona składnia, pojedyncze cudzysłowy):
[
'app' => [
'name' => 'MyApp',
'debug' => true,
'hosts' => [
'h1.example.com',
'h2.example.com',
],
],
]
Mapowanie typów
| JSON | PHP |
|---|---|
| ciąg znaków | ciąg znaków (pojedyncze cudzysłowy) |
| liczba całkowita | int |
| liczba (dziesiętna) | float |
| wartość logiczna | true / false |
| null | null |
| tablica (JSON) | tablica indeksowana |
| obiekt (JSON) | tablica asocjacyjna |
Kiedy używać tablic asocjacyjnych, a kiedy indeksowanych
PHP ma jeden typ tablicy o obu zachowaniach. JSON wyraźnie rozróżnia obiekt i tablicę, więc mapowanie jest następujące:
{}→ tablica asocjacyjna (['key' => value]).[]→ tablica indeksowana ([value, value]).
Generator zawsze zachowuje to rozróżnienie; mieszanie obu w PHP jest dozwolone, ale mylące.
Pułapki charakterystyczne dla PHP
- Klucze będące ciągami liczbowymi. PHP rzutuje
"42"na całkowity klucz42w tablicy. Jeśli Twój JSON używa ciągów liczbowych jako kluczy i potrzebujesz ich jako ciągów, konwersja w obie strony przezarray_combineich nie zachowa. - Duże liczby całkowite. JSON może zawierać liczby całkowite większe niż
PHP_INT_MAXw kompilacjach 32-bitowych. Generator ostrzega, gdy może się to zdarzyć. - UTF-8. Ciągi znaków w PHP to sekwencje bajtów; generator wypisuje UTF-8 dosłownie. Upewnij się, że plik
.phpjest zapisany jako UTF-8 bez BOM.
Przykłady zastosowań
- Pliki konfiguracyjne. Zarówno Laravel, jak i Symfony korzystają z konfiguracji w postaci tablic PHP. Przeniesienie konfiguracji z JSON w stylu dostawcy sprawdza się dobrze.
- Fikstury testowe. Fikstury
PHPUnitsą czytelniejsze jako tablice niż jako pliki JSON ładowane w czasie wykonywania. - Seedery. Seedery baz danych w Laravel często zaczynają się jako zrzut JSON i stają się tablicami PHP.
Częste błędy
- Konwersja tablic PHP z powrotem do JSON.
json_encodetraktuje tablicę asocjacyjną jako obiekt, a indeksowaną jako tablicę. Jeśli je pomieszasz (['key' => 'val', 0 => 'x']), na wyjściu otrzymasz obiekt. Trzymaj tablice o kształcie JSON w kształcie JSON. - Podwójne cudzysłowy z apostrofami. Ciągi PHP w pojedynczych cudzysłowach wymagają ekranowania
\'; ciągi w podwójnych cudzysłowach wymagają ekranowania\\", a zmienne mogą zostać przypadkowo zinterpolowane, jeśli nie zachowasz ostrożności. W przypadku danych używaj pojedynczych cudzysłowów. - Zapominanie o końcowych przecinkach. PHP dopuszcza je od PHP 7.3 i sprawiają, że różnice (diff) są czytelniejsze. Generator dodaje je domyślnie.
Najczęściej zadawane pytania
Krótka składnia ([...]) jest dostępna od PHP 5.4 i stanowi idiomatyczny wybór dla całego nowoczesnego kodu. Długa składnia (array(...)) jest potrzebna tylko dla kodu, który musi działać na PHP 5.3 lub starszym, czyli w systemach przestarzałych.
Tak. Pliki konfiguracyjne Laravel to zwykłe tablice PHP zwracane z pliku. Wklej wynik generatora po return i zapisz go w katalogu config/.
Ciągi PHP w pojedynczych cudzysłowach nie interpolują zmiennych ani sekwencji ucieczki (poza \' i \\). W przypadku literałów danych jest to szybsze i bezpieczniejsze. Podwójne cudzysłowy mają znaczenie tylko wtedy, gdy chcesz umieścić w ciągu \n, \t lub $variable.
Nie, generuje literał tablicy. W razie potrzeby opakuj go samodzielnie w return, const lub właściwość klasy. Utrzymywanie małego rozmiaru wyniku ułatwia jego komponowanie.
Powiązane narzędzia
Generator konfiguracji webpack
Utwórz plik webpack.config.js dla webpacka 5 do czystego JavaScriptu, Reacta lub Vue: TypeScript, Babel, CSS lub Sass, obrazy, HtmlWebpackPlugin, serwer deweloperski i polecenie npm install.
Generator kolorów analogicznych
Twórz pięciokolorowe palety analogiczne z dowolnego koloru bazowego: klasyczną trójkę, dwie zewnętrzne barwy oraz wartości hex, RGB i HSL.
Generator fikcyjnych numerów telefonu
Generuj do 50 fikcyjnych numerów z oficjalnie zastrzeżonych zakresów w pięciu krajach.
Walidator XSD
Waliduj dokument XML wobec schematu XSD i zgłaszaj niezgodności elementów i typów z dokładnymi numerami wierszy.
Kod na obraz
Wklej kod, ustaw motyw, kolory, rozmiar czcionki, odstępy, nagłówek i numery wierszy, sprawdź podgląd canvas i pobierz PNG. Renderowanie zwykłego tekstu, bez podświetlania składni.
Dekoder Protocol Buffers
Dekoduj lokalnie bajty Protobuf z zapisu hex, Base64, Base64URL, tekstu lub pliku, analizuj pola i eksportuj prywatny raport.
Narzędzie jest dostępne w innych językach
- تحويل JSON إلى مصفوفة PHP [AR]
- JSONからPHP配列へ [JA]
- JSON zu PHP-Array [DE]
- JSON till PHP-array [SV]
- JSON para Array PHP [PT]
- JSON을 PHP 배열로 변환 [KO]
- JSON vers tableau PHP [FR]
- JSON naar PHP-array [NL]
- JSON เป็น PHP Array [TH]
- JSON sang mảng PHP [VI]
- JSON a Array de PHP [ES]
- JSON ke Array PHP [ID]
- JSON in array PHP [IT]
- JSON в массив PHP [RU]
- JSON'dan PHP dizisine [TR]
- 从 JSON 到 PHP 数组 [ZH]
- JSON to PHP Array [EN]