que - PHP: cuente un objeto stdClass
que es un objeto en php (6)
Tengo un objeto stdClass creado a partir de json_decode que no devolverá el número correcto cuando ejecute la función de recuento ($ obj). El objeto tiene 30 propiedades, pero el retorno de la función count () es, por ejemplo, 1.
¿Algunas ideas?
A continuación se muestra un ejemplo de uno de los objetos. (Estoy solicitando la información de tendencias diarias de Twitter). Si este objeto tenía 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
)
)
)
El objeto no tiene 30 propiedades. Tiene uno, que es una matriz que tiene 30 elementos. Necesitas la cantidad de elementos en esa matriz.
El problema es que el recuento está destinado a contar los índices en una matriz, no las propiedades de un objeto (a menos que sea un objeto personalizado que implemente la interfaz Contable). Intenta lanzar el objeto, como a continuación, como una matriz y ver si eso ayuda.
$total = count((array)$obj);
Simplemente lanzar un objeto como una matriz no siempre funcionará, pero al ser un simple objeto stdClass, debería hacer el trabajo aquí.
La función de conteo está destinada a ser utilizada en
- Arrays
- Objetos que se derivan de las clases que implementan la interfaz contable
Un stdClass no es ninguno de estos. La forma más fácil / rápida de lograr lo que busca es
$count = count(get_object_vars($some_std_class_object));
Esto usa la función get_object_vars de PHP, que devolverá las propiedades de un objeto como una matriz. A continuación, puede utilizar esta matriz con la función de conteo de PHP.
No hay nada de malo en contar () aquí, "tendencias" es la única clave que se cuenta en este caso, puede intentar hacer:
count($obj->trends);
O:
count($obj->trends[''2009-08-21 11:05'']);
O tal vez incluso haciendo:
count($obj, COUNT_RECURSIVE);
Solo usa esto
$i=0;
foreach ($object as $key =>$value)
{
$i++;
}
la variable $i
es el número de claves.
count()
funciona con una matriz. Pero si desea contar la longitud del objeto, puede usar este método.
$total = $obj->length;