J'ai un objet stdClass créé à partir de json_decode qui ne renvoie pas le bon nombre lorsque j'exécute la fonction count ($ obj). L'objet a 30 propriétés, mais le retour sur la fonction count () est par exemple 1.
Des idées?
Voici un exemple de l'un des objets. (Je demande les informations de tendance quotidiennes à Twitter). Si cet objet avait plus d'une propriété, 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] => "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
, étant un tableau avec 20 entrées, donc count ($ trends) renverrait à juste titre 1.Réponses:
Le problème est que count est destiné à compter les index dans un tableau, pas les propriétés d'un objet (à moins qu'il ne s'agisse d'un objet personnalisé qui implémente l'interface Countable). Essayez de lancer l'objet, comme ci-dessous, sous forme de tableau et voyez si cela aide.
Le simple fait de convertir un objet en tableau ne fonctionnera pas toujours, mais étant un simple objet stdClass, il devrait faire le travail ici.
la source
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 / le plus rapide d'accomplir ce que vous recherchez est
Cela utilise la fonction get_object_vars de PHP , qui retournera les propriétés d'un objet sous forme de tableau. Vous pouvez ensuite utiliser ce tableau avec la fonction de comptage de PHP.
la source
get_object_vars()
sur unstdClass
qui résultait de la conversion d'un tableau en un objet produira un tableau vide. Le cast de l'stdClass
instance en tableau, en revanche, fonctionne partout.L'objet n'a pas 30 propriétés. Il en a un, qui est un tableau de 30 éléments. Vous avez besoin du nombre d'éléments dans ce tableau.
la source
Il n'y a rien de mal avec count () ici, "tendances" est la seule clé qui est comptée dans ce cas, vous pouvez essayer de faire:
Ou:
Ou peut-être même faire:
la source
Utilisez simplement ceci
la variable
$i
est le nombre de clés.la source
Count Normal arrya ou objet
Compter les arries ou objets multidimensionnels
la source
count()
La fonction fonctionne avec un tableau. Mais si vous souhaitez compter la longueur de l'objet, vous pouvez utiliser cette méthode.la source