2016-02-20 2 views
0

Спасибо за ваше время в чтении этого сообщения.Проблемы с декодированием json object

Мой php-файл получает объект json. Но я сталкиваюсь с проблемами при его расшифровке.

Мой PHP код:

$data=$_POST['arg1']; 
echo $data; 
$json = json_decode($data,true); 
echo $json; 
$i = 1; 
foreach($json as $key => $value) { 
    print "<h3>Name".$i." : " . $value . "</h3>"; 
    $i++; 
} 

Когда я echo результаты данных, как показано ниже.

{ 
    "SCI-2": { 
     "quantity": 2, 
     "id": "SCI-2", 
     "price": 280, 
     "cid": "ARTCOTSB" 
    } 
} 

Когда эхо $json, результат, как это следующим образом:

массив Name1: Array.

Пожалуйста помогите, как мне нужно Тхо доступ в cid и quantity значения в $data.

+0

Вы получаете единственный объект в json? Кроме того, он всегда имеет этот формат? –

+0

@SimplyMe: Спасибо за ваш ответ. Нет, это не всегда один объект. Это может быть несколько. (Оформить заказ в корзине) – user3762051

ответ

0

json_decode возвращает массив. И для печати массива вы можете использовать print_r или var_dump.

Теперь для доступа к ценности, вы можете попробовать:

$json["SCI-2"]["quantity"] по количеству и $json["SCI-2"]["cid"] для МУРа.

Демо: https://eval.in/522350

Для доступа в foreach вам это нужно:

foreach($json as $k) { 
    foreach($k as $key => $value) { 
     print "<h3>Name".$i." : " . $value . "</h3>"; 
    } 
} 
+0

Спасибо: но есть вероятность, что я получу несколько продуктов, а также примерный формат: {"SCI-2": {"количество": 3, "id": " ТСМ-2" , "цена": 280, "чид": "ARTCOTSB"}, "ТСМ-3": { "количество": 1, "идентификатор": "ТСМ-3", "цена": 480,» cid ":" ARTPUR 002 "}," SCI-4 ": {" количество ": 1," id ":" SCI-4 "," цена ": 600," cid ":" ARTMSKBUD "}}. Как я могу динамически получить доступ к значениям, а затем – user3762051

+0

См. Мой обновленный ответ. –

+0

Большое вам спасибо, что вы очень мне очень помогли. – user3762051

0

Поскольку вы не знаете, количество элементов в вашем объекте, используйте:

$obj = json_decode($json); 

После это, повторите переменную $obj и после, что внутри цикла , используйте foreach для получения каждого свойства.

foreach($iteratedObject as $key => $value) { 
    //your stuff 
} 
Смежные вопросы