Спасибо, что уделили время чтению этого сообщения.

Мой файл 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, результат будет следующим:

Имя массива1: Массив.

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

0
user3762051 20 Фев 2016 в 20:06

2 ответа

Лучший ответ

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

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

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

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

Для доступа в foreach вам понадобится следующее:

foreach($json as $k) {
   foreach($k as $key => $value) {
      print "<h3>Name".$i." : " . $value . "</h3>";
   }
}
0
Mr. Engineer 20 Фев 2016 в 17:23

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

$obj = json_decode($json);

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

foreach($iteratedObject as $key => $value) {
    //your stuff
}
0
Simply Me 20 Фев 2016 в 17:21