cannot use object of type stdclass

Выдает ошибку 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

  • Вопрос задан более трёх лет назад
  • 21834 просмотра

Потому что $t — это объект, и вместо $t[‘category’] нужно использовать $t->category

Это же элементарщина, да и ошибка предельно ясно говорит в чем проблема.

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

то ваш код должен корректно работать, так как второй аргумент функции json_decode, как раз и отвечает за, то что переданный json будет преобразован в ассоциативный массив, а не в объект.

I get a strange error using json_decode() . It decode correctly the data (I saw it using print_r ), but when I try to access to info inside the array I get:

I only tried to do: $result[‘context’] where $result has the data returned by json_decode()

How can I read values inside this array?

14 Answers 14

Use the second parameter of json_decode to make it return an array:

The function json_decode() returns an object by default.

You can access the data like this:

If you have identifiers like from-date (the hyphen would cause a PHP error when using the above method) you have to write:

If you want an array you can do something like this:

Or cast the object to an array:

You must access it using -> since its an object.

Change your code from:

Use true as the second parameter to json_decode . This will decode the json into an associative array instead of stdObject instances:

See the documentation for more details.

Have same problem today, solved like this:

If you call json_decode($somestring) you will get an Object and you need to access like $object->key , but if u call json_decode($somestring, true) you will get an dictionary and can access like $array[‘key’]

It’s not an array, it’s an object of type stdClass.

You can access it like this:

As the Php Manual say,

print_r — Prints human-readable information about a variable

When we use json_decode(); , we get an object of type stdClass as return type. The arguments, which are to be passed inside of print_r() should either be an array or a string. Hence, we cannot pass an object inside of print_r() . I found 2 ways to deal with this.

Cast the object to array.
This can be achieved as follows.

By accessing the key of the Object
As mentioned earlier, when you use json_decode(); function, it returns an Object of stdClass. you can access the elements of the object with the help of -> Operator.

One, can also use multiple keys to extract the sub elements incase if the object has nested arrays.

Their are other options to print_r() as well, like var_dump(); and var_export();

Я получаю странную ошибку, используя json_decode() . Он правильно декодирует данные (я видел его с помощью print_r ), но когда я пытаюсь получить доступ к информации внутри массива, я получаю:

Я только пытался: $result[‘context’] где $result имеет данные, возвращаемые json_decode()

Как читать значения внутри этого массива?

Используйте второй параметр json_decode чтобы он возвращал массив:

Функция json_decode() возвращает объект по умолчанию.

Вы можете получить доступ к следующим данным:

Если у вас есть идентификаторы, такие как from-date (дефис приведет к ошибке PHP при использовании вышеуказанного метода), вы должны написать:

Если вы хотите массив, вы можете сделать что-то вроде этого:

Или выделите объект в массив:

Вы должны получить к нему доступ, используя -> с момента своего объекта.

Измените свой код:

Используйте true в качестве второго параметра для json_decode . Это расшифровывает json в ассоциативный массив вместо экземпляров stdObject :

Дополнительную информацию см. В документации .

Это не массив, это объект типа stdClass.

Вы можете получить доступ к нему следующим образом:

Подробнее здесь: Что такое stdClass в PHP?

Сегодня такая же проблема решена:

Если вы вызываете json_decode($somestring) вы получите объект, и вам нужно получить доступ, как $object->key json_decode($somestring, true) $object->key , но если вы вызываете json_decode($somestring, true) вы получите словарь и можете получить доступ, как $array[‘key’]

Как говорится в руководстве Php ,

print_r – печатает удобочитаемую информацию о переменной

Когда мы используем json_decode(); , мы получаем объект типа stdClass как возвращаемый тип. Аргументы, которые должны быть переданы внутри print_r() должны быть либо массивом, либо строкой. Следовательно, мы не можем передать объект внутри print_r() . Я нашел 2 способа справиться с этим.

Передача объекта в массив.
Это можно сделать следующим образом.

При доступе к ключу объекта
Как упоминалось ранее, когда вы используете json_decode(); function, он возвращает объект stdClass. вы можете получить доступ к элементам объекта с помощью -> Operator.

Один из них также может использовать несколько ключей для извлечения подэлементов, если объект имеет вложенные массивы.

Это другие варианты print_r() , например var_dump(); и var_export();

Вы можете преобразовать объект stdClass в массив, например:

stdClsss для массива

Вот подпись функции:

Если параметр равен false, который по умолчанию, он вернет соответствующий тип php. Вы получаете значение этого типа с использованием парадигмы object.method.

Когда параметр равен true, он возвращает ассоциативные массивы.

Он вернет NULL при ошибке.

Если вы хотите получить значение через массив, установите для него значение true.

Когда вы пытаетесь получить к нему доступ в виде $result[‘context’] , вы рассматриваете его как массив, ошибка говорит вам, что вы на самом деле имеете дело с объектом, тогда вы должны получить к нему доступ в виде $result->context

вместо использования скобок используется оператор объекта, например, мой массив на основе объекта базы данных создается таким образом в классе DB:

для доступа к информации я использую этот код в скрипте контроллера:

затем, чтобы отобразить информацию, которую я проверяю, чтобы проверить, установлено ли servicecalls и имеет счет больше 0, помните, что это не массив, на который я ссылаюсь, поэтому я обращаюсь к записям с оператором объекта «->» следующим образом:

Я получил эту ошибку из-за синего, потому что мой вход в facebook с трудом прекратил работу (я также изменил хосты) и выбросил эту ошибку. Исправить это очень просто

Проблема была в этом коде

В основном функция isset () ожидает массив, но вместо этого находит объект. Простым решением является преобразование объекта PHP в массив с использованием (array) quantifier. Ниже приведен фиксированный код.

Обратите внимание на использование байта блока array () в первой строке.

Источник: computermaker.info

Понравилась статья? Поделиться с друзьями:
Ок! Компьютер
Добавить комментарий