2016-04-08 12 views
0

JSON-Datei zurück:Wert kann nicht von JSON in PHP

{ 
    "stock": [ 
      { 
       "symbol": "AVGO", 
       "name": "Broadcom Ltd.", 
       "sector": "Technology", 
       "industry": "Semiconductors", 
       "SCTR": "97.8", 
       "delta": "2.5", 
       "close": "154.97", 
       "vol": "2297509" 
      }, 
      { 
       "symbol": "CBS", 
       "name": "CBS Corp.", 
       "sector": "Cyclicals", 
       "industry": "Entertainment", 
       "SCTR": "92.3",   
       "delta": "-3.6", 
       "close": "53.58", 
       "vol": "4045416" 
      } 
     ] 
} 

PHP:

$jsona = json_decode($json, true); 
echo $jsona['stock']['symbol']; 

Warum kann ich nicht das Symbol bekommen? Und wie bekomme ich alle Symbolwerte? Danke!

+1

Sie 'print_r ($ jsona);' dann sehen Sie die Struktur und das Du hast mehrere Symbolwerte. – Rizier123

+0

Original JSON ist hier, aber ich kann nicht mein Wert zu http://stockcharts.com/j-sum/sum?cmd=sctr&view=L&timeframe=W – Fireghost

+0

@FelixKling Es ist gültig json. Sie haben wahrscheinlich gerade einen Kopierfehler beim Einfügen in jsonlint. – Rizier123

Antwort

1

Der Wert von "Lager" ist ein Array. So können Sie entweder tun:

echo $jsona['stock'][0]['symbol']; 
echo $jsona['stock'][1]['symbol']; 

oder Schleife durch sie:

foreach ($jsona['stock'] as $stock) { 
    echo "Symbol: {$stock['symbol']}\n"; 
    echo "Name: {$stock['name']}\n"; 
    echo "Sector: {$stock['sector']}\n\n"; 
} 

, die produziert:

Symbol: AVGO 
Name: Broadcom Ltd. 
Sector: Technology 

Symbol: CBS 
Name: CBS Corp. 
Sector: Cyclicals 
+0

Es ist Arbeit, großartig! Aber ich kann immer noch nicht auf die Idee kommen, wenn der JSON zu
geändert wurde: { "symbol": "AVGO", "name": "Broadcom Ltd." }, { "Symbol": "CBS", "Name": "CBS Corp." } ] – Fireghost

+0

@Fireghost: Lesen Sie die doppelte Frage. Es zeigt Ihnen, was diese Strukturen wirklich bedeuten und wie Sie auf diese allgemein und nicht nur auf Ihre Daten zugreifen können. Dies wird Ihnen hoffentlich erlauben, dieses Wissen auf unterschiedlich strukturierte Daten anzuwenden. –

1

Sie müssen $jsona['stock'][0]['symbol'] verwenden, da der Bestand ein Array enthält, so dass Sie angeben müssen, auf welches Element des Arrays Sie zugreifen. Sie können dann eine foreach-Schleife verwenden, um jedes Element des Arrays $jsona['stock'] zu durchlaufen.

3

In Ihrem Fall ist $stocks['stock'] das Array, das Sie durchschleifen möchten. Ich änderte die Variablennamen ein Gefühl der Schleife zu machen:

$stocks = json_decode($json, true); 
foreach($stocks['stock'] AS $stock){ 
    echo $stock['symbol'] ."<br>"; 
} 

Returns

AVGO

CBS