Tengo un objeto stdClass creado a partir de json_decode que no devolverá el número correcto cuando ejecuto la función count ($ obj). El objeto tiene 30 propiedades, pero el retorno de la función count () es digamos 1.
¿Algunas ideas?
A continuación se muestra un ejemplo de uno de los objetos. (Estoy solicitando la información diaria de tendencias de Twitter). Si este objeto tuviera más de una propiedad, el recuento ($ obj) sería 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
, que es una matriz con 20 entradas, por lo que contar ($ tendencias) con razón devolvería 1.Respuestas:
El problema es que cuenta tiene la intención de contar los índices en una matriz, no las propiedades de un objeto (a menos que sea un objeto personalizado que implemente la interfaz contable). Intente lanzar el objeto, como a continuación, como una matriz y ver si eso ayuda.
Simplemente convertir un objeto como una matriz no siempre funcionará, pero al ser un simple objeto stdClass, debería hacer el trabajo aquí.
fuente
La función de conteo está destinada a ser utilizada en
Un stdClass no es ninguno de estos. La forma más fácil / rápida de lograr lo que buscas es
Esto utiliza la función get_object_vars de PHP , que devolverá las propiedades de un objeto como una matriz. Luego puede usar esta matriz con la función de conteo de PHP.
fuente
get_object_vars()
en unstdClass
resultado de lanzar una matriz a un objeto, se obtendrá una matriz vacía. Lanzar lastdClass
instancia a una matriz, por otro lado, funciona en todas partes.El objeto no tiene 30 propiedades. Tiene uno, que es una matriz que tiene 30 elementos. Necesita la cantidad de elementos en esa matriz.
fuente
Aquí no hay nada de malo en contar (), "tendencias" es la única clave que se cuenta en este caso, puede intentar hacer:
O:
O tal vez incluso haciendo:
fuente
Solo usa esto
La variable
$i
es el número de claves.fuente
Cuenta Arrya u objeto normal
Cuenta arrya u objeto multidimensional
fuente
count()
La función funciona con una matriz. Pero si desea contar la longitud del objeto, puede usar este método.fuente