2014-06-12 67 views
0
"deals": [ 
    { 
     "soldQuantity": 1000, 
     "shippingAddressRequired": false, 
    "options": [ 
     { 
     "value": { 
        "formattedAmount": "$43.78", 
        "currencyCode": "USD", 
        "amount": 4378 
       }, 
     }, 
    ], 
}, 
] 

我想formattedAmount和貨幣代碼使用PHP foreach循環如何使用PHP我想解析解析JSON數據formattedAmount和CURRENCYCODE

我的代碼來解析給出了錯誤: - Trying to get property of non-object

代碼

$json = file_get_contents('../jsonfile/product.json'); 
    $json_string = json_decode($json); 
    foreach($json_string->deals as $mydata) 
    { 
     foreach($mydata->options->value as $option) 
    {        
    echo $option->; 
    } 
    } 
+0

包含實際的錯誤消息可能會有幫助。 –

+0

這是一些可怕的JSON。 –

+0

@ user3719363,即JSON不合法。它很破碎。 –

回答

2

不要做foreach($mydata->options->value as $option)因爲值不是數組。 請執行以下操作:

foreach($mydata->options as $option) { 
    echo $option->value->formattedAmount; 
    echo $option->value->currencyCode; 
    echo $option->value->amount; 
} 
+0

感謝您的回答,但我嘗試它也給出了上述相同的錯誤: - 試圖獲取非對象的屬性 – user3719363

+0

編輯我的答案,讓你明白我的意思 – Yaniv

+0

謝謝,這就是我想要的答案... :) – user3719363

0

由於dealsoptions的值是數組,你需要說:

foreach($mydata->options[0]->value as $option) 

你的json格式不好,順便說一下。陣列不應該有一個逗號,因爲你的options陣列。只有這一點會導致你的問題。

A foreach在這裏並不是真的需要,因爲deals數組中只有一個值,options數組中只有一個值。

+0

感謝您的回覆。不,他們不是一個,另一件事是它再次給出錯誤:不能使用stdClass類型的對象作爲 – user3719363

+0

@ user3719363中的數組,在列出的數組中只有一個值。它說錯誤發生在哪個行號?你截斷了錯誤信息的結尾。 –