Почему ошибка Cannot use object of type stdClass as array in?

$tr = Array ( [0] => stdClass Object ( [account] => 265388630323288 [category] => move [time] => 1423668673 [amount] => -0.00455848 [otheraccount] => 2309 [comment] => ) [1] => stdClass Object ( [account] =>  265388630323288 [category] => move [time] => 1423668673 [amount] => -0.00455848 [otheraccount] => 2309 [comment] => )  )


Выполняю

<?php foreach($tr as $t) : ?>

 <?php switch( $t['category'] ) {

...............


Выдает ошибку PHP Fatal error: Cannot use object of type stdClass as array in

Если делаю так
$items = json_decode($tr , true); или $items = json_decode($tr);

Получаю json_decode() expects parameter 1 to be string, array given in
  • Вопрос задан
  • 43332 просмотра
Решения вопроса 1
DevMan
@DevMan
Потому что $t - это объект, и вместо $t['category'] нужно использовать $t->category

Это же элементарщина, да и ошибка предельно ясно говорит в чем проблема.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
rework
@rework
Помог ответ? В благодарность отметь его решением
Если вы делаете так:
$items = json_decode($tr , true);

то ваш код должен корректно работать, так как второй аргумент функции json_decode, как раз и отвечает за, то что переданный json будет преобразован в ассоциативный массив, а не в объект.
Ответ написан
Комментировать
@killerdr
$items = json_decode(json_encode($items),true);
и проблема решится.
оставлю тут для будущих искателей решения такого недоразумения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы