У меня есть объект stdClass, созданный из json_decode, который не будет возвращать правильное число, когда я запускаю функцию count ($ obj). Объект имеет 30 свойств, но функция count () возвращает, скажем, 1.
Любые идеи?
Ниже приведен пример одного из объектов. (Я запрашиваю ежедневную информацию о тенденциях в Твиттере). Если бы у этого объекта было более одного свойства, счетчик ($ obj) был бы равен 1.
[trends] => stdClass Object
(
[2009-08-21 11:05] => Array
(
[0] => stdClass Object
(
[query] => "Follow Friday"
[name] => Follow Friday
)
[1] => stdClass Object
(
[query] => "Inglourious Basterds" OR "Inglorious Basterds"
[name] => Inglourious Basterds
)
[2] => stdClass Object
(
[query] => Inglourious
[name] => Inglourious
)
[3] => stdClass Object
(
[query] => #songsincode
[name] => #songsincode
)
[4] => stdClass Object
(
[query] => #shoutout
[name] => #shoutout
)
[5] => stdClass Object
(
[query] => "District 9"
[name] => District 9
)
[6] => stdClass Object
(
[query] => #howmanypeople
[name] => #howmanypeople
)
[7] => stdClass Object
(
[query] => Ashes OR #ashes
[name] => Ashes
)
[8] => stdClass Object
(
[query] => #youtubefail
[name] => #youtubefail
)
[9] => stdClass Object
(
[query] => TGIF
[name] => TGIF
)
[10] => stdClass Object
(
[query] => #wish09
[name] => #wish09
)
[11] => stdClass Object
(
[query] => #watch
[name] => #watch
)
[12] => stdClass Object
(
[query] => Avatar
[name] => Avatar
)
[13] => stdClass Object
(
[query] => Ramadhan
[name] => Ramadhan
)
[14] => stdClass Object
(
[query] => Goodnight
[name] => Goodnight
)
[15] => stdClass Object
(
[query] => iPhone
[name] => iPhone
)
[16] => stdClass Object
(
[query] => #iranelection
[name] => #iranelection
)
[17] => stdClass Object
(
[query] => Apple
[name] => Apple
)
[18] => stdClass Object
(
[query] => "Usain Bolt"
[name] => Usain Bolt
)
[19] => stdClass Object
(
[query] => H1N1
[name] => H1N1
)
)
)
2009-08-21 11:05
- массив с 20 записями, поэтому count ($ trend) по праву вернет 1.Ответы:
Проблема в том, что count предназначен для подсчета индексов в массиве, а не свойств объекта (если только это не настраиваемый объект, реализующий интерфейс Countable). Попробуйте преобразовать объект, как показано ниже, в виде массива и посмотрите, поможет ли это.
Простое преобразование объекта в массив не всегда будет работать, но, будучи простым объектом stdClass, он должен выполнить свою работу здесь.
источник
Функция подсчета предназначена для использования на
StdClass не является ни тем, ни другим. Самый простой / быстрый способ добиться того, что вам нужно, - это
Здесь используется функция PHP get_object_vars , которая возвращает свойства объекта в виде массива. Затем вы можете использовать этот массив с функцией подсчета PHP.
источник
get_object_vars()
вstdClass
результате преобразования массива в объект был получен пустой массив. СstdClass
другой стороны, приведение экземпляра к массиву работает везде.У объекта нет 30 свойств. У него есть один, который представляет собой массив из 30 элементов. Вам нужно количество элементов в этом массиве.
источник
Здесь нет ничего плохого в count (), «тенденции» - единственный ключ, который в этом случае учитывается, вы можете попробовать:
Или:
Или, может быть, даже делаю:
источник
Просто используйте это
переменная
$i
- количество ключей.источник
Счетчик Нормальная аррия или предмет
Подсчитайте многомерную аррию или объект
источник
count()
функция работает с массивом. Но если вы хотите посчитать длину объекта, вы можете использовать этот метод.источник