Eu tenho um objeto stdClass criado a partir de json_decode que não retornará o número certo quando executar a função count ($ obj). O objeto possui 30 propriedades, mas o retorno da função count () é 1.
Alguma ideia?
Abaixo está um exemplo de um dos objetos. (Estou solicitando as informações de tendências diárias do Twitter). Se esse objeto tivesse mais de uma propriedade, a contagem ($ obj) seria igual a 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
, sendo um array com 20 entradas, então count ($ tendências) seria justamente retornar 1.Respostas:
O problema é que o objetivo da contagem é contar os índices em uma matriz, não as propriedades em um objeto (a menos que seja um objeto personalizado que implemente a interface Contável). Tente converter o objeto, como abaixo, como uma matriz e veja se isso ajuda.
Simplesmente converter um objeto como uma matriz nem sempre funciona, mas como um objeto stdClass simples, ele deve fazer o trabalho aqui.
fonte
A função de contagem deve ser usada em
Um stdClass não é um desses. A maneira mais fácil / rápida de realizar o que você procura é
Isso usa a função get_object_vars do PHP , que retornará as propriedades de um objeto como uma matriz. Você pode usar esse array com a função count do PHP.
fonte
get_object_vars()
em umstdClass
resultado da conversão de uma matriz para um objeto, a matriz era vazia. A transmissão dastdClass
instância para matriz, por outro lado, funciona em qualquer lugar.O objeto não possui 30 propriedades. Ele tem um, que é uma matriz que possui 30 elementos. Você precisa do número de elementos nessa matriz.
fonte
Não há nada errado com count () aqui, "tendências" é a única chave que está sendo contada nesse caso, você pode tentar:
Ou:
Ou talvez até fazendo:
fonte
Basta usar isso
a variável
$i
é o número de chaves.fonte
Contagem Arrya normal ou objeto
Contar arrya ou objeto multidimensional
fonte
count()
A função funciona com array. Mas se você quiser contar o comprimento do objeto, poderá usar esse método.fonte