JSON in array PHP

Incolla un documento JSON e ottieni un array PHP letterale formattato per un file sorgente .php, sintassi breve dell’array ([...]), indentazione corretta, stringhe quotate correttamente, oggetti annidati diventano array associativi e gli array rimangono indicizzati. Utile per incorporare fixture API nei test o per popolare file di configurazione.

Come convertire JSON in PHP

  1. 1

    Incolla il JSON

    Qualsiasi JSON valido, oggetti, array, profondamente annidati.

  2. 2

    Scegli la sintassi

    Sintassi breve `[...]` (PHP 5.4+) o lunga `array(...)` (raramente necessaria ora).

  3. 3

    Scegli le virgolette per le stringhe

    Virgolette singole (nessuna interpolazione, scappa gli apostrofi) o virgolette doppie (consentono l'interpolazione `$`, di solito non ciò che desideri per i dati).

  4. 4

    Copia l'array

    Incolla nel tuo file `.php`, assegna a un `return`, o avvolgi in `config([...])`.

Esempio

Input:

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

Output (sintassi breve, virgolette singole):

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

Mappatura dei tipi

JSON PHP
stringa stringa (virgolette singole)
intero int
numero (decimale) float
booleano true / false
null null
array (JSON) array indicizzato
oggetto (JSON) array associativo

Quando usare associativo vs indicizzato

PHP ha un tipo di array con entrambi i comportamenti. JSON distingue chiaramente tra oggetto e array, quindi la mappatura è:

  • {} -> associativo (['key' => value]).
  • [] -> indicizzato ([value, value]).

Il generatore preserva sempre la distinzione; mescolare i due in PHP è legale ma confuso.

Problemi specifici di PHP

  • Chiavi di stringa numerica. PHP converte "42" nella chiave intera 42 in un array. Se il tuo JSON utilizza stringhe numeriche come chiavi e hai bisogno che siano stringhe, il round-trip array_combine non le preserva.
  • Interi grandi. JSON può contenere interi più grandi di PHP_INT_MAX su build a 32 bit. Il generatore avverte quando ciò potrebbe accadere.
  • UTF-8. Le stringhe PHP sono sequenze di byte; il generatore emette UTF-8 letteralmente. Assicurati che il tuo file .php sia salvato come UTF-8 senza BOM.

Casi d’uso

  • File di configurazione: Laravel e Symfony utilizzano entrambi la configurazione in array PHP. Incollare una configurazione JSON in stile vendor funziona bene.
  • Fixture di test: le fixture di PHPUnit sono più pulite come array rispetto ai file JSON caricati a runtime.
  • Seeds: i seeders del database in Laravel spesso iniziano come un dump JSON e diventano array PHP.

Errori comuni

  • Ritorno degli array PHP a JSON. json_encode tratta un array associativo come un oggetto e un array indicizzato come un array. Se li mescoli (['key' => 'val', 0 => 'x']), ottieni un oggetto in uscita. Mantieni gli array a forma di JSON come JSON.
  • Virgolette doppie con apostrofi. Le stringhe PHP con virgolette singole necessitano di \\' scappato; le stringhe con virgolette doppie necessitano di \\" scappato e le variabili vengono interpolate accidentalmente se non fai attenzione. Attieniti alle virgolette singole per i dati.
  • Dimenticare le virgole finali. PHP le consente dalla versione 7.3 e rendono le differenze più pulite. Il generatore le aggiunge per impostazione predefinita.

Domande frequenti

La sintassi breve ([...]) è disponibile da PHP 5.4 ed è la scelta idiomatica per tutto il codice moderno. La sintassi lunga (array(...)) è necessaria solo per il codice che deve funzionare su PHP 5.3 o versioni precedenti, essenzialmente sistemi legacy.

Sì. I file di configurazione di Laravel sono semplici array PHP restituiti da un file. Incolla l’output del generatore dopo return e salvalo in config/.

Le stringhe PHP con virgolette singole non interpolano variabili o sequenze di escape (eccetto \' e \\). Per i letterali di dati, questo è più veloce e sicuro. Le virgolette doppie sono importanti solo quando desideri \n, \t o $variabile all’interno della stringa.

No, emette un array letterale. Avvolgilo tu stesso con return, const, o una proprietà di classe se necessario. Mantenere l’output piccolo lo rende composabile.

Strumenti correlati

Strumento disponibile in altre lingue