web-dev-qa-db-fra.com

PHP Tableau à tableau JSON à l'aide de json_encode ();

J'ai encodé un tableau que j'ai créé à l'aide de la fonction json_encode(); intégrée. J'en ai besoin au format d'un tableau de tableaux comme suit:

[["Afghanistan",32,12],["Albania",32,12]]

Cependant, il revient comme:

["2":["Afghanistan",32,12],"4":["Albania",32,12]]

Comment puis-je supprimer ces numéros de ligne sans utiliser de ruse Regex?

61
Ryan Brodie

Si les clés du tableau PHP ne sont pas des nombres consécutifs, json_encode() doit faire en sorte que l'autre construction soit un objet, car les tableaux JavaScript sont toujours consécutivement indexés numériquement.

Utilisez array_values() sur la structure externe dans PHP pour supprimer les clés de tableau d'origine et les remplacer par une numérotation consécutive à base zéro:

Exemple:

// Non-consecutive 3number keys are OK for PHP
// but not for a JavaScript array
$array = array(
  2 => array("Afghanistan", 32, 13),
  4 => array("Albania", 32, 12)
);

// array_values() removes the original keys and replaces
// with plain consecutive numbers
$out = array_values($array);
json_encode($out);
// [["Afghanistan", 32, 13], ["Albania", 32, 12]]
144
Michael Berkowski

json_encode () la fonction vous aidera à encoder tablea à JSON en php.

si vous n'utilisez que json_encode directement sans option spécifique, un tableau sera retourné. Comme mentionné ci-dessus question

$array = array(
  2 => array("Afghanistan",32,13),
  4 => array("Albania",32,12)
);
$out = array_values($array);
json_encode($out);
// [["Afghanistan",32,13],["Albania",32,12]]

Puisque vous essayez de convertir Array en JSON, je vous suggérerais alors d'utiliser JSON_FORCE_OBJECT comme option supplémentaire (paramètres) dans json_encode, comme ci-dessous.

<?php
$array=['Apple','orange','banana','strawberry'];
echo json_encode($array, JSON_FORCE_OBJECT);
// {"0":"Apple","1":"orange","2":"banana","3":"strawberry"} 
?>
11
Dinesh Gopal Chand

Je souhaite ajouter à la réponse de Michael Berkowski que cela peut également se produire si l'ordre du tableau est inversé. Dans ce cas, il est un peu plus difficile d'observer le problème, car dans l'objet json, l'ordre sera ordonné en ordre croissant.

Par exemple:

[
    3 => 'a',
    2 => 'b',
    1 => 'c',
    0 => 'd'
]

Reviendra:

{
    0: 'd',
    1: 'c',
    2: 'b',
    3: 'a'
}

La solution dans ce cas est donc d'utiliser array_reverse avant de l'encoder en json

6
Inc33

Une utilisation courante de JSON consiste à lire les données d'un serveur Web et à les afficher dans une page Web.

Ce chapitre vous apprendra comment échanger des données JSON entre le client et un serveur PHP.

PHP possède des fonctions intégrées pour gérer JSON.

Les objets dans PHP peuvent être convertis en JSON à l'aide de la fonction PHP json_encode ():

<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;
?>
1
L VEERAPANDI BCA

Si vous ne spécifiez pas d'index sur votre tableau initial, vous obtenez les numériques ordinaires. Les tableaux doivent avoir une forme d'index unique

0
Ray