2013-05-14 139 views
0

我坚持这个JSON数据:PHP解码阵列中的JSON对象

我有一个变量此信息:

$mydata= '{"success":true,"data":[{"sku":203823,"issoldout":false,"isShowDiscount":false,"discount":0,"currencycode":"USD","currencysymbol":"US$","price":"10.20","listprice":"","adddate":"4/23/2013"}]}'; 

我已成功地告诉我们,如果成功,是不是真的做这个:

$obj = JSON_decode($mydata, true); 

if ($obj['success'] != 1) { 
    print 'Does Not Exist<br />'; 
} 
else{ 
    print $obj['success']."<br/>"; 
} 

其中echo $obj['success'];等于1,如果真和0,如果假。

让我卡住的是如何获得“data”:[]数组中的键。

我试过print $obj['data'][0];print $obj['data']['sku'];但两者都没有返回。

有关如何获取信息的任何想法都会受到欢迎。

+1

围绕mydata字符串使用单引号。 – shapeshifter 2013-05-14 02:12:24

+0

还缺少字符串末尾的分号。 JSON_decode实际上是json_decode。 – shapeshifter 2013-05-14 02:16:25

+0

固定。只是一个复制粘贴错误。 – Travis 2013-05-14 02:27:55

回答

5

$data是一个数组,那么:

echo $obj['data'];应打印 “阵列”

echo $obj['data'][0]['sku'];应打印 “203823”

0

见我的意见,这段代码成功运行。

$mydata= '{"success":true,"data":[{"sku":203823,"issoldout":false,"isShowDiscount":false,"discount":0,"currencycode":"USD","currencysymbol":"US$","price":"10.20","listprice":"","adddate":"4/23/2013"}]}'; 

$obj = json_decode($mydata, TRUE); 

if ($obj['success'] != 1) { 
    print 'Does Not Exist<br />'; 
} 
else{ 
    print $obj['success']."<br/>"; 
} 
1
$mydata= "{"success":true,"data":[{...}]}" 

$mydata['data']包含对象的阵列。

json{..}内容为对象,[..]为数组。

所以,你会去

foreach($obj['data'] as $items) 
{ 
    echo $items['sku']; 
} 

我使用foreach因为有可能是在你的JSON结果不止一个对象。