JSON a Array de PHP

Pega un documento JSON y obtén un literal de array de PHP formateado para un archivo de origen .php, sintaxis de array corta ([...]), indentación adecuada, cadenas correctamente entrecomilladas, objetos anidados convirtiéndose en arrays asociativos y arrays manteniéndose indexados. Útil para incrustar fixtures de API en pruebas o sembrar archivos de configuración.

Cómo convertir JSON a PHP

  1. 1

    Pega el JSON

    Cualquier JSON válido, objetos, arrays, profundamente anidados.

  2. 2

    Elige sintaxis

    Corta `[...]` (PHP 5.4+) o larga `array(...)` (raramente necesaria ahora).

  3. 3

    Elige comillas para cadenas

    Comillas simples (sin interpolación, escapa apóstrofes) o comillas dobles (permite interpolación de `$`, generalmente no es lo que deseas para datos).

  4. 4

    Copia el array

    Pega en tu archivo `.php`, asigna a un `return`, o envuelve en `config([...])`.

Ejemplo

Entrada:

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

Salida (sintaxis corta, comillas simples):

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

Mapeo de tipos

JSON PHP
cadena cadena (comillas simples)
entero int
número (decimal) float
booleano true / false
null null
array (JSON) array indexado
objeto (JSON) array asociativo

Cuándo usar asociativo vs indexado

PHP tiene un tipo de array con ambos comportamientos. JSON distingue claramente entre objeto y array, por lo que el mapeo es:

  • {} -> asociativo (['key' => value]).
  • [] -> indexado ([value, value]).

El generador siempre preserva la distinción; mezclar los dos en PHP es legal pero confuso.

Trucos específicos de PHP

  • Claves de cadena numérica. PHP convierte "42" a la clave entera 42 en un array. Si tu JSON usa cadenas numéricas como claves y las necesitas como cadenas, el viaje de ida y vuelta de array_combine no las preservará.
  • Enteros grandes. JSON puede contener enteros más grandes que PHP_INT_MAX en compilaciones de 32 bits. El generador advierte cuando eso podría suceder.
  • UTF-8. Las cadenas de PHP son secuencias de bytes; el generador emite UTF-8 literalmente. Asegúrate de que tu archivo .php esté guardado como UTF-8 sin BOM.

Casos de uso

  • Archivos de configuración: Laravel y Symfony utilizan configuración de array de PHP. Pegar un archivo de configuración JSON al estilo de un proveedor funciona bien.
  • Fixtures de prueba: Las fixtures de PHPUnit son más limpias como arrays que como archivos JSON cargados en tiempo de ejecución.
  • Seeds: los sembradores de bases de datos en Laravel a menudo comienzan como un volcado JSON y se convierten en arrays de PHP.

Errores comunes

  • Viaje de ida y vuelta de arrays de PHP a JSON. json_encode trata un array asociativo como un objeto y un array indexado como un array. Si los mezclas (['key' => 'val', 0 => 'x']), obtienes un objeto al salir. Mantén los arrays con forma de JSON en forma de JSON.
  • Comillas dobles con apóstrofes. Las cadenas de PHP con comillas simples necesitan \\' escapadas; las cadenas con comillas dobles necesitan \\" escapadas y las variables se interpolan accidentalmente si no tienes cuidado. Usa comillas simples para datos.
  • Olvidar comas finales. PHP las permite desde PHP 7.3 y hacen que las diferencias sean más limpias. El generador las añade por defecto.

Preguntas frecuentes

La sintaxis corta ([...]) está disponible desde PHP 5.4 y es la opción idiomática para todo código moderno. La sintaxis larga (array(...)) solo es necesaria para código que debe ejecutarse en PHP 5.3 o anterior, esencialmente sistemas heredados.

Sí. Los archivos de configuración de Laravel son arrays de PHP simples devueltos desde un archivo. Pega la salida del generador después de return y guárdala en config/.

Las cadenas de PHP con comillas simples no interpolan variables ni secuencias de escape (excepto \' y \\). Para literales de datos, esto es más rápido y seguro. Las comillas dobles solo importan cuando deseas \n, \t, o $variable dentro de la cadena.

No, emite un literal de array. Envuelve tú mismo con return, const, o una propiedad de clase según sea necesario. Mantener la salida pequeña la hace componible.

Herramientas relacionadas

Herramienta disponible en otros idiomas