2016-04-08 89 views
0

JSON文件:无法从JSON返回值

{ 
    "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']; 

为什么我不能得到的符号? 如何获得所有符号值? 谢谢!

+1

做'的print_r($ jsona);'然后就看到结构和你有多个符号值。 – Rizier123

+0

原始JSON在这里,但我无法得到我的价值http://stockcharts.com/j-sum/sum?cmd=sctr&view=L&timeframe=W – Fireghost

+0

@FelixKling它是有效的json。将它放入jsonlint中可能只是有一个复制错误。 – Rizier123

回答

1

的 “股票” 的值是一个数组。所以,你既可以做:

echo $jsona['stock'][0]['symbol']; 
echo $jsona['stock'][1]['symbol']; 
通过他们

或循环:

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

主要生产:

Symbol: AVGO 
Name: Broadcom Ltd. 
Sector: Technology 

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

它的工作,太棒了!但是,如果JSON变为
[ “符号”:“AVGO”, “名称”:“Broadcom Ltd.”,我仍然无法获得该想法。 }, { “symbol”:“CBS”, “name”:“CBS Corp.” } ] – Fireghost

+0

@Fireghost:阅读重复的问题。它会告诉你这些结构的真正含义以及如何以一般方式访问它们,而不仅仅是针对数据。这将有希望允许您将这些知识应用于不同结构化的数据。 –

1

您必须使用$jsona['stock'][0]['symbol'],因为stock包含一个数组,因此您必须指定要访问的数组的哪个元素。然后,您可以使用foreach循环遍历$jsona['stock']数组的每个元素。

3

在你的情况下,$stocks['stock']是你想要循环的数组。我改变了变量名,使环的一些感觉:

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

返回

AVGO

CBS