araç köşesi

Convertir du JSON en tableau PHP — et l'inverse

Transformez du JSON en code de tableau PHP, ou un tableau PHP en JSON, avec les règles de guillemets, d'échappement et de clés de PHP

Vos données restent chez vous. La conversion se fait dans le navigateur ; rien n'est envoyé à un serveur.

Comment ça marche

Pour intégrer une réponse d'API ou un fichier de configuration comme tableau fixe dans du code PHP, il faut sinon réécrire le JSON à la main : les accolades deviennent des crochets, chaque deux-points devient « => » et chaque chaîne doit suivre les règles de guillemets de PHP. Collez le JSON à gauche ; à droite apparaît un code qui commence par « <?php » et qui peut être enregistré puis chargé par include tel quel. Dans l'exemple, l'objet « adresse » devient un tableau associatif imbriqué et la liste « etiquettes » un tableau sans clés ; les apostrophes de « 'faites main' » sont échappées, et la remarque qui contient un retour à la ligne est écrite entre guillemets doubles pour que « \n » désigne bien le saut de ligne. Laissez le nom de variable vide et le code devient return [...]; — la forme qu'attendent les fichiers de configuration de Laravel et de Symfony. Dans l'autre sens, collez un tableau PHP (avec ou sans $donnees = ou return devant) : le résultat correspond à la sortie de json_encode avec JSON_PRETTY_PRINT, sauf que les lettres accentuées restent lisibles au lieu de devenir \u00e9.

Cet outil est aussi connu sous le nom de convertir json en tableau php, json en tableau php, convertir json en array php, tableau php en json, json to php array, php array to json.

Qu'est-ce que Tableau PHP (array) ?

Le tableau PHP est la structure de données à tout faire du langage : une suite ordonnée de paires clé-valeur. La même structure contient une simple liste comme 'pomme', 'poire' et un enregistrement aux champs nommés comme 'ville' => 'Casablanca'. Les clés sont des entiers ou des chaînes ; les valeurs des chaînes, des nombres, true/false, null ou d'autres tableaux. PHP n'a pas de types liste et objet séparés comme JSON ; à la conversion, c'est l'ordre des clés qui décide.

Qu'est-ce que json_encode et json_decode ?

json_encode transforme une valeur PHP en texte JSON et json_decode transforme un texte JSON en valeur PHP ; les deux sont intégrées à PHP. Par défaut, json_decode renvoie les objets JSON sous forme d'objets stdClass ; avec true en second argument, vous obtenez des tableaux imbriqués comme ceux de cette page. Sans option, json_encode échappe aussi les lettres accentuées en séquences \u et les barres obliques en \/ ; JSON_UNESCAPED_UNICODE et JSON_UNESCAPED_SLASHES désactivent ce comportement.

Quelle est la différence entre JSON et un tableau PHP ?

JSON est un format texte conçu pour échanger des données entre langages : les clés sont toujours des chaînes entre guillemets doubles, et la virgule finale, les commentaires et les guillemets simples sont interdits. Un tableau PHP fait partie du code source PHP : guillemets simples, clés entières, virgule finale et commentaires sont permis, mais seul PHP sait le lire. Choisissez JSON si les données partent vers un autre programme, un navigateur ou une API ; un tableau PHP si elles restent dans votre projet PHP comme configuration fixe ou données de test.

Ce qui change quand un tableau PHP devient du JSON

PHP n'a qu'un seul type de tableau, qui sert à la fois de liste ordonnée et de table clé-valeur. JSON distingue les deux : tableaux entre crochets et objets entre accolades. Cette page applique la même règle que json_encode : si les clés vont de 0, 1, 2 … dans l'ordre et sans trou, le résultat est un tableau JSON ; si une seule clé diffère, c'est un objet JSON. Ainsi [3 => 'x', 1 => 'y'] devient {"3": "x", "1": "y"}, et un tableau vide donne toujours [], jamais {}.

Les clés sont lues avec les règles de conversion de PHP. Une clé texte qui ressemble à un entier, comme '7', devient le nombre 7, tandis que '07' reste du texte ; la clé true devient 1 et la clé null une chaîne vide. Si la même clé apparaît deux fois, la dernière valeur l'emporte et garde la première position, comme en PHP ; la ligne d'état indique combien de clés étaient en double. Un élément écrit sans clé reçoit la plus grande clé entière vue jusque-là, plus un.

  • ['a', 'b'] → ["a", "b"] (une liste ordonnée reste un tableau JSON)
  • [1 => 'a', 2 => 'b'] → {"1": "a", "2": "b"} (ne commence pas à 0)
  • ['7' => 'x'] → la clé devient l'entier 7 ; '07' reste du texte
  • 1.0 → 1.0 (float conservé), 0x1A → 26, 1_000 → 1000

Ce qui ne se convertit pas : constantes, fonctions, variables dans une chaîne

Cet outil n'exécute pas de code PHP ; il lit uniquement des valeurs littérales : chaînes entre guillemets simples ou doubles, entiers, nombres décimaux, true, false, null et tableaux imbriqués. Les constantes comme PHP_EOL ou __DIR__, les appels comme date(), la concaténation 'a' . 'b' et les chaînes entre guillemets doubles contenant une variable (« Bonjour $nom ») ne prennent leur valeur qu'à l'exécution. Plutôt que de deviner, l'outil s'arrête en indiquant la ligne et la colonne. Écrivez alors la valeur à la main ou exécutez echo json_encode($tableau); dans PHP.

Dans l'autre sens, méfiez-vous des grands entiers. Un nombre JSON comme 12345678901234567890 dépasse la limite des entiers 64 bits de PHP (9223372036854775807) ; en lisant la ligne, PHP le transforme en float et les derniers chiffres sont arrondis. Les longs numéros avec lesquels on ne calcule pas — identifiants, numéros de carte ou codes-barres — doivent rester des chaînes (entre guillemets) dans le JSON pour éviter cette perte.

Questions fréquentes

Comment convertir du JSON en tableau PHP ?

Collez le JSON dans le panneau de gauche de cette page ; le panneau de droite affiche du code PHP de la forme $donnees = [...];. Pour convertir à l'exécution dans votre propre code, utilisez json_decode($json, true) ; sans true en second argument, PHP renvoie un objet stdClass et non un tableau.

Comment convertir un tableau PHP en JSON ?

Collez le tableau, avec la ligne $donnees = [...]; ou return [...];, dans le panneau de gauche ; le sens passe tout seul à PHP → JSON. Le résultat est identique à json_encode($donnees, JSON_PRETTY_PRINT), à ceci près que les lettres accentuées restent lisibles au lieu de devenir des séquences \u (ce que fait l'option JSON_UNESCAPED_UNICODE en PHP).

Y a-t-il une différence entre [ ] et array( ) ?

Non, les deux créent le même tableau. La syntaxe courte entre crochets existe depuis PHP 5.4 (2012) et c'est celle des normes de code actuelles. Choisissez array( ) seulement si le code doit encore tourner sur PHP 5.3 ou plus ancien.

Pourquoi certaines chaînes sont-elles entre guillemets simples et d'autres entre guillemets doubles ?

Entre guillemets simples, PHP laisse \n et $ tels quels ; c'est donc le choix par défaut, et seuls la barre oblique inverse et l'apostrophe sont échappées. Si une chaîne contient un caractère invisible comme un retour à la ligne ou une tabulation, des guillemets doubles sont utilisés, car \n ne signifie un saut de ligne qu'entre guillemets doubles ; le signe $ est alors écrit \$ pour que PHP ne le prenne pas pour une variable.

Les données collées sont-elles envoyées à un serveur ?

Non. La lecture du JSON ou du PHP, la conversion et la préparation du fichier se font entièrement dans votre navigateur ; même un tableau de configuration contenant un mot de passe de base de données ou une clé d'API ne quitte pas cette page.