/ / Créer une boucle foreach à partir d'un fichier JSON - php, json

Créer une boucle foreach à partir d'un fichier JSON - php, json

J'ai un fichier JSON (items.json) qui ressemble à ceci:

{"response":{"success":1,"current_time":1446373851,"items":[
{
"Item1": {"last_updated":1446372015,"quantity":73,"value":1200},
"Item2": {"last_updated":1446372015,"quantity":40,"value":5297},
"Item3": {"last_updated":1446372015,"quantity":148,"value":2507}
}]}}

J’ai essayé de créer une boucle for pour créer des éléments avec les valeurs de chaque élément du json:

$values = file_get_contents( $siteurl."/json/items.json");
$values = json_decode($values);

foreach ($values->items as $key => $value) {

if($value==Item1 && $value->value>1000){
<p><?php echo $value->value ; ?></p>
}
}

Dans l’exemple ci-dessus, je teste la première valeur de "items" (Item1). J’aimerais pouvoir avoir un foreach pour chacun de ces trois items.

Mais le navigateur génère l'erreur suivante "Avertissement: argument non valide fourni pour foreach () dans".

Comment créer correctement un foreach où je peux obtenir des valeurs de tous les objets "items" (ex "Item1" et "Item2) qui fonctionnent pour mon format de fichier json.

Réponses:

0 pour la réponse № 1

Vos éléments sont en réalité dans l'objet "réponse", puis l'objet est également encapsulé dans un tableau. Si vous ne pouvez pas modifier items.json, alors vous pouvez le faire.

$values = file_get_contents( $siteurl."/json/items.json");
$values = json_decode($values);

foreach ($values->response->items as $key => $value) {
foreach($value as $key => $value) {
if($key == "Item1" && $value->value > 1000) {
echo $value->value;
}
}
}

Une meilleure solution serait toutefois de supprimer le tableau de items.json (crochets), car il semble redondant, puis procédez comme suit:

$values = file_get_contents( $siteurl."/json/items.json");
$values = json_decode($values);

foreach ($values->response->items as $key => $value) {
if($key == "Item1" && $value->value > 1000) {
echo $value->value;
}
}

0 pour la réponse № 2

S'il vous plaît essayer de cette façon

foreach ($values as $key => $value) {


foreach($value->items as $k => $v){
foreach($v as $k1 => $v1){


echo ($v1->value);
}
}


}

0 pour la réponse № 3

Essayez juste ci-dessous le code qui est écrit pour vous fournir une sortie exacte selon vos besoins

$data = file_get_contents( $siteurl."/json/items.json");
$values = json_decode($data);

foreach ($values as $key => $value) {
foreach($value->items as $key1 => $value1){
foreach($value1 as $key2 => $value2){
if($key2=="Item1" && $value2->value>1000){
echo $value2->value;
}
}
}
}