Voici mon code php avec une chaîne au format json:
<?php
$string='{"items": [
{
"address":"W 7th Ave"
},
{
"address":"W 8th St"
}
]}';
$json = json_decode($string, true);
foreach ($json as $key => $value){
echo "$key: $value\n";
};
?>
Je veux apprendre à analyser/afficher json string dans quelque chose que je peux montrer en HTML ou mettre dans une base de données .. Cependant, je suis coincé sur quelque chose qui est très simple, mais j'ai passé presque toute la matinée à essayer de comprendre.
Ce que je veux comprendre, c'est pourquoi les résultats de mon code ci-dessus me donnent le résultat suivant:
"items: Array"
Et pas ce que je veux/espère obtenir:
"items: W 7th Ave"
"items: W 8th St"
Qu'est-ce que je rate? "Adresse" n'est-il pas le "niveau" suivant par rapport à "Article" dans le tableau?
$string = file_get_contents('./string.json');
$json = json_decode($string);
si vous voulez avoir items: <address>
:
foreach ($json['items'] as $address)
{
echo "items:". $address['address'] ."\n";
};
de toute façon, si vous n’êtes pas sûr de la construction d’un tableau, vous pouvez l’imprimer via:
print_r($json);
qui va imprimer:
Array
(
[items] => Array
(
[0] => Array
(
[address] => W 7th Ave
)
[1] => Array
(
[address] => W 8th St
)
)
)
maintenant, vous avez découvert que $json
contient uniquement un tableau (items
) de deux tableaux, puis, si vous le faites en boucle, vous obtiendrez ce tableau qui est imprimé dans votre exemple . Comme expliqué ci-dessus, vous devez aller un peu plus loin en boucle les éléments de votre tableau items
et affiche leur élément address
.
voici le script complet: http://pastie.org/2275879
BTW, j’ai fait var_dump, print, print_r, je l’a fait basculer d’objet en tableau, pour essayer d’en savoir plus sur la structure de tableau, etc., ainsi que sur un tas de variations d’écho, ainsi que pour et pour chaque boucle, etc. obtenir ce que je voulais de tableau.
Ok, donc pour résumer, les réponses semblent indiquer que je dois:
J'ai essayé les deux réponses et obtenu:
En utilisant TaylorOtwell, répondez:
J'ai eu: Adresse: Array Adresse: Array
Taylor
En utilisant la réponse de Dalen:
J'ai eu: 0: tableau 1: tableau
On dirait que j'ai besoin d'une manière ou d'une autre de parcourir un tableau une deuxième fois dans le premier formulaire pour obtenir les valeurs réelles?
Cela ressemblerait-il à quelque chose comme ça?
foreach ($json['items'] as $key => $value)
{
foreach ($json['items']['address'] as $key => $value)
{
echo "$key: $value\n";
};
};
Vos éléments sont dans un tableau. Vous pouvez les parcourir comme ceci:
foreach ($json['items'] as $address)
{
echo 'Address: '.$address;
}
Commencez par créer une classe pour vos éléments.
function getAddress(address)
{
this.address=address;
}
Poussez des objets dans votre tableau
newAddress = JSON.stringify(new
getAddress(address));
AddressArray.Push(newAddress);
Convertissez votre tableau en tableau JSON en utilisant
AllAddress=JSON.stringify(AddressArray);
Envoyez votre tableau à backend/fetch des éléments comme
$json_array = json_decode($AllAddress, true);
for($i=0;$i<count($json_array);$i++)
{
$eachAddress = json_decode($json_array[$i],true);
$address= $eachAddress["address"];//fetch particular element from your JSON Object
}
* Utilisez implode (php) pour obtenir tous les éléments du tableau à la fois.