2013-12-03 3 views
0

Я декодировал входящую строку через POST в двух JSON, и я пытаюсь ее прочитать и сохранить ключи в vars. эти массивы:чтение json с объектом

$infos = $_POST; 

$orderInformation['orderInfo'] = json_decode($infos['orderinf']); 

$orderItensInformation['orderItensInfo'] = json_decode($infos['orderitensinf']); 

Это то, что var_dump возвращения $orderInformation:

array(1) { 
    ["orderInfo"]=> 
    object(stdClass)#1 (9) { 
     ["customer_fone"]=> 
     string(10) "5554120082" 
     ["neighborhood"]=> 
     string(4) "aaaa" 
     ["order_price"]=> 
     int(45) 
     ["payment_method"]=> 
     string(8) "CASH" 
     ["customer_email"]=> 
     string(19) "[email protected]" 
     ["street"]=> 
     string(14) "Unknown street" 
     ["number"]=> 
     string(3) "111" 
     ["order_date"]=> 
     object(stdClass)#2 (5) { 
     ["day"]=> 
     int(3) 
     ["month"]=> 
     int(11) 
     ["time"]=> 
     int(1) 
     ["year"]=> 
     int(2013) 
     ["minute"]=> 
     int(24) 
     } 
     ["customer_name"]=> 
     string(6) "Noname" 
    } 
} 

Вопрос в том, как я могу получить информацию внутри объекта? Я пытался использовать Еогеасп:

foreach($orderInformation->orderInfo as $oi) { 
     $fone = $oi->customer_fone; 
     $nbh = $oi->neighborhood; 
     . 
     . 
     . 
} 

Но не получилось. Вары были пусты.

ответ

0

Нет необходимости в цикле, если у вас есть несколько заказов в этом массиве

$orderInformation['orderInfo'] Ваш объект

echo $orderInformation['orderInfo']->customer_fone; 
// Should return 5554120082 

Для аккуратным подхода, попробуйте

$x = $orderInformation['orderInfo']; 
echo $x->customer_fone; 

Большой заблуждается в ваш код.

$orderInformation->ordeInfo не существует как собственность, которую вы называете.

$orderInformation['orderInfo']

+0

Согласен, в этом случае foreach не нужен. Но не должно ли это работать? Мне понадобится foreach для итерации в $ orderItensInformation. – Smash

+0

Код, который вы указали, не будет работать из-за синтаксических ошибок 'foreach ($ orderInformation-> orderInfo' И поскольку' $ orderInformation ['orderInfo'] 'не является массивом, вы не можете закодировать объект. Правильный код будет 'foreach ($ orderInformation as $ order ...', а затем $ order будет вашим объектом – dockeryZ

+0

Получил его ... Есть ли способ конвертировать объект в массив? Где customer_fone, neighbour, ... будут ассоциативными ключами в этом array. thx! – Smash

0

From the manual, возврат будет объект, если не прошел ваш второй параметр в него устанавливается истина, которая возвращает ассоциативный массив (может быть более подходящим для вас в данном случае):

$orderInformation['orderInfo'] = json_decode($infos['orderinf'], true); 

$orderItensInformation['orderItensInfo'] = json_decode($infos['orderitensinf'], true); 

foreach($orderInformation['orderInfo'] as $oi) { 
     $fone = $oi['customer_fone']; 
     $nbh = $oi['neighborhood']; 
     . 
     . 
     . 
} 
+0

Не знал, что его можно конвертировать в объект rray разбор истинного аргумента. Я прочитаю руководство, спасибо! ;) – Smash

+0

Нет проблем, но вы должны прочитать руководство, прежде чем спрашивать здесь в следующий раз. –

Смежные вопросы