2016-05-04 12 views
-1

So habe ich ein Stück JSON-Daten. Denken Sie daran: Ich zeige Stück!PHP - Lesen von JSON-Daten funktioniert nicht richtig?

{ 
    "status" : "success", 
    "prices" : [ 
    { 
     "market_hash_name" : "AK-47 | Aquamarine Revenge (Battle-Scarred)", 
     "price" : "15", 
     "created_at" : 1460708937 
    }, 

Hier ist meine PHP, die Preis bekommen sollte, aber es funktioniert nicht. Was könnte das Problem sein? 'price'=>$prices->prices[0]->market_hash_name[$row['market_hash_name']]->price);

+0

posten Sie Ihre komplette json. –

+0

Es ist zu groß ..: D: D –

+1

ohne es kann ich nicht herausfinden, die JSON. –

Antwort

0

Sie benötigen über Ihre Preise iterieren die passende market_hash_name mit $row['market_hash_name'] zu finden. Dann können Sie den Preis von diesem passenden Objekt extrahieren.

Ich habe versucht, Ihren Code so nahe wie möglich zu halten.

$sql = $db->query('SELECT * FROM `items`'); 
$prices2 = file_get_contents('cache/SuiPrices.json'); 
$prices2 = json_decode($prices); 
while ($row = $sql->fetch()) { 
    $price = null; 
    foreach($prices2->prices as $data) { 
     if($row['market_hash_name'] == $data->market_hash_name) { 
      $price = (float) $data->price; 

      break; 
     } 
    } 

    $array['items'][] = array(
     'img' => 'http://steamcommunity-a.akamaihd.net/economy/image/'.$row['img'].'/200fx200', 
     'name' => $row['market_hash_name'], 
     'assetid' => $row['assetid'], 
     'price' => $price 
    } 
} 

exit(json_encode($array)); 
+0

Ihr Code ist perfekt! Aber ich verstehe es nicht, warum es nicht den Preis von dieser Datei bekommt:/ –

+0

Versuchen Sie es zu debuggen, indem Sie 'echo' Anweisungen hinzufügen. Verwenden Sie zum Beispiel 'echo $ row ['market_hash_name']. "\ n"; 'innerhalb der' while() 'Schleife. Verwenden Sie 'echo $ data-> market_hash_name. "\ n"; 'innerhalb der 'foreach()' Schleife. Dann sehen Sie, ob die erste Antwort mit den anderen auf Ihrer Seite übereinstimmt. Mein Code verwendet eine 1: 1-Übereinstimmung (==) und wenn der _market_hash_name_ nicht genau derselbe ist, wird es nicht übereinstimmen und '$ price' bleibt' null'. –

+0

Problem scheint hier zu werden gerade herausgefunden: ($ row [ ‚market_hash_name‘] == $ Daten-> market_hash_name) –

0

Sein, weil Sie nicht Preis unter market_hash_name Knoten haben. Dies sollte den Trick:

//the second parameter (true) says that the function should return an array 
$data = json_decode($jsonString, true); 
echo $data['prices'][0]['price']; 

Wichtig: Dies ist nur ein Beispiel für die gegebenen JSON-String Teil verwendet wird. Sie müssen die Knoten selbst indizieren. :)

0

Kasse der Antwort:

Online Link: 3v4l.org

Der Haupt JSON-Daten sind zu groß und nicht in einem beliebigen Web-Server wie Sandbox oder 3v41 laufen.

Es gibt den Teil der json.

$market_hash_name = 'AK-47 | Aquamarine Revenge (Battle-Scarred)'; 

$json = '{ 
    "status" : "success", 
    "prices" : [ 
    { 
     "market_hash_name" : "AK-47 | Aquamarine Revenge (Battle-Scarred)", 
     "price" : "15", 
     "created_at" : 1460708937 
    }, 
    { 
     "market_hash_name" : "AK-47 | Aquamarine Revenge (Factory New)", 
     "price" : "41.4", 
     "created_at" : 1460708934 
    } 
    ] 
}'; 

$arr = json_decode($json, true); 

foreach($arr['prices'] as $key => $val){ 
    if($val['market_hash_name'] == $market_hash_name){ 
     echo $val['price']; //15 
    } 
} 
+0

Ist das nur mögliche Sache? Ich gebe den vollständigen Code .. http: // Pastebin.com/B4cQVsPH –

+0

sicher, versuchen Sie es mich wissen zu lassen. –

+0

Ich habe die Pastebin hier hinzugefügt, sollte ich es zum Hauptpost setzen? –