J’ai un object stdClass créé à partir de json_decode qui ne renverra pas le bon numéro lorsque j’exécute la fonction count ($ obj). L’object a 30 propriétés, mais le retour sur la fonction count () est dit 1.
Des idées?
Voici un exemple d’un des objects. (Je demande des informations sur les tendances quotidiennes sur Twitter). Si cet object possédait plusieurs propriétés, le nombre ($ obj) serait égal à 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] => "Dissortingct 9" [name] => Dissortingct 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 ) ) )
Le problème est que count est destiné à compter les index dans un tableau, pas les propriétés sur un object (sauf s’il s’agit d’un object personnalisé qui implémente l’interface Countable). Essayez de lancer l’object, comme ci-dessous, en tant que tableau et de voir si cela vous aide.
$total = count((array)$obj);
Le simple fait de lancer un object en tant que tableau ne fonctionnera pas toujours, mais en tant que simple object stdClass, le travail devrait être accompli ici.
La fonction de comptage est destinée à être utilisée sur
Un stdClass n’est ni l’un ni l’autre. Le moyen le plus simple et le plus rapide d’accomplir ce que vous recherchez est
$count = count(get_object_vars($some_std_class_object));
Cela utilise la fonction get_object_vars de PHP, qui retournera les propriétés d’un object en tant que tableau. Vous pouvez ensuite utiliser ce tableau avec la fonction de comptage de PHP.
L’object n’a pas 30 propriétés. Il en a un, qui est un tableau contenant 30 éléments. Vous avez besoin du nombre d’éléments dans ce tableau.
Il n’y a rien de mal avec count () ici, “trends” est la seule clé qui est comptée dans ce cas, vous pouvez essayer:
count($obj->trends);
Ou:
count($obj->trends['2009-08-21 11:05']);
Ou peut-être même faire:
count($obj, COUNT_RECURSIVE);
Utilisez juste ceci
$i=0; foreach ($object as $key =>$value) { $i++; }
la variable $i
est le nombre de clés.
count()
fonctionne avec le tableau. Mais si vous voulez compter la longueur de l’object, vous pouvez utiliser cette méthode.
$total = $obj->length;