JSON zu PHP-Array

Füge ein JSON-Dokument ein und erhalte ein PHP-Array-Literal, das für eine .php-Quelldatei formatiert ist, Kurzarraysyntax ([...]), richtige Einrückung, Strings korrekt in Anführungszeichen gesetzt, verschachtelte Objekte werden zu assoziativen Arrays und Arrays bleiben indiziert. Nützlich zum Einbetten von API-Fixtures in Tests oder zum Befüllen von Konfigurationsdateien.

Wie man JSON in PHP konvertiert

  1. 1

    Füge das JSON ein

    Jedes gültige JSON, Objekte, Arrays, tief verschachtelt.

  2. 2

    Wähle die Syntax

    Kurze `[...]` (PHP 5.4+) oder lange `array(...)` (jetzt selten benötigt).

  3. 3

    Wähle die Anführungszeichen für Strings

    Einzelne Anführungszeichen (keine Interpolation, Apostrophe escapen) oder doppelte Anführungszeichen (erlaubt `$`-Interpolation, normalerweise nicht gewünscht für Daten).

  4. 4

    Kopiere das Array

    Füge es in deine `.php`-Datei ein, weise es `return` zu oder wickle es in `config([...])` ein.

Beispiel

Eingabe:

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

Ausgabe (Kurzsyntax, einfache Anführungszeichen):

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

Typzuordnung

JSON PHP
String String (einfache Anführungszeichen)
Ganzzahl int
Zahl (Dezimal) float
boolescher Wert true / false
null null
Array (JSON) indiziertes Array
Objekt (JSON) assoziatives Array

Wann assoziativ vs. indiziert verwenden

PHP hat einen Array-Typ mit beiden Verhaltensweisen. JSON unterscheidet klar zwischen Objekt und Array, daher ist die Zuordnung:

  • {} -> assoziativ (['key' => value]).
  • [] -> indiziert ([value, value]).

Der Generator bewahrt immer die Unterscheidung; das Mischen der beiden in PHP ist legal, aber verwirrend.

PHP-spezifische Fallstricke

  • Numerische String-Schlüssel. PHP wandelt "42" in den ganzzahligen Schlüssel 42 in einem Array um. Wenn dein JSON numerische Strings als Schlüssel verwendet und du sie als Strings benötigst, wird die array_combine-Rundreise sie nicht bewahren.
  • Große Ganzzahlen. JSON kann Ganzzahlen größer als PHP_INT_MAX auf 32-Bit-Bauten halten. Der Generator warnt, wenn das passieren könnte.
  • UTF-8. PHP-Strings sind Byte-Sequenzen; der Generator gibt UTF-8 wörtlich aus. Stelle sicher, dass deine .php-Datei als UTF-8 ohne BOM gespeichert ist.

Anwendungsfälle

  • Konfigurationsdateien: Laravel und Symfony verwenden beide PHP-Array-Konfigurationen. Das Einfügen einer JSON-Konfiguration im Vendor-Stil funktioniert gut.
  • Test-Fixtures: PHPUnit-Fixtures sind als Arrays sauberer als als JSON-Dateien, die zur Laufzeit geladen werden.
  • Seeds: Datenbank-Seeder in Laravel beginnen oft als JSON-Dump und werden zu PHP-Arrays.

Häufige Fehler

  • Rundreise von PHP-Arrays zurück zu JSON. json_encode behandelt ein assoziatives Array als Objekt und ein indiziertes Array als Array. Wenn du sie mischst (['key' => 'val', 0 => 'x']), erhältst du ein Objekt beim Ausgeben. Halte JSON-förmige Arrays JSON-förmig.
  • Doppelte Anführungszeichen mit Apostrophen. Einzelne Anführungszeichen in PHP-Strings müssen \\' escapen; doppelte Anführungszeichen benötigen \\" und Variablen werden versehentlich interpoliert, wenn du nicht aufpasst. Halte dich für Daten an einfache Anführungszeichen.
  • Vergessen von nachgestellten Kommas. PHP erlaubt sie seit PHP 7.3 und sie machen Diffs sauberer. Der Generator fügt sie standardmäßig hinzu.

Häufig gestellte Fragen

Die kurze Syntax ([...]) ist seit PHP 5.4 verfügbar und die idiomatische Wahl für modernen Code. Die lange Syntax (array(...)) wird nur für Code benötigt, der auf PHP 5.3 oder früher laufen muss, im Wesentlichen für Altsysteme.

Ja. Laravel-Konfigurationsdateien sind einfache PHP-Arrays, die aus einer Datei zurückgegeben werden. Füge die Ausgabe des Generators nach return ein und speichere sie in config/.

Einzelne Anführungszeichen in PHP-Strings interpolieren keine Variablen oder Escape-Sequenzen (außer \' und \\). Für Datenliterale ist dies schneller und sicherer. Doppelte Anführungszeichen sind nur wichtig, wenn du \n, \t oder $variable innerhalb des Strings möchtest.

Nein, es gibt ein Array-Literal aus. Wickele es selbst mit return, const oder einer Klassen-Eigenschaft ein, wie benötigt. Die Ausgabe klein zu halten, macht sie komponierbar.

Verwandte Tools

Tool in anderen Sprachen verfügbar