Ich habe ein stdClass-Objekt aus json_decode erstellt, das nicht die richtige Nummer zurückgibt, wenn ich die Funktion count ($ obj) ausführe. Das Objekt hat 30 Eigenschaften, aber die Rückgabe der Funktion count () lautet beispielsweise 1.
Irgendwelche Ideen?
Unten sehen Sie ein Beispiel für eines der Objekte. (Ich fordere die täglichen Trendinformationen von Twitter an). Wenn dieses Objekt mehr als eine Eigenschaft hätte, wäre die Anzahl ($ obj) gleich 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
, ein Array mit 20 Einträgen, so dass count ($ Trends) zu Recht 1 zurückgeben würde.Antworten:
Das Problem ist, dass count die Indizes in einem Array zählen soll, nicht die Eigenschaften eines Objekts (es sei denn, es handelt sich um ein benutzerdefiniertes Objekt, das die Countable-Schnittstelle implementiert). Versuchen Sie, das Objekt wie unten als Array zu verwenden, und prüfen Sie, ob dies hilfreich ist.
Das einfache Umwandeln eines Objekts als Array funktioniert nicht immer, aber als einfaches stdClass-Objekt sollte es die Aufgabe hier erledigen.
quelle
Die Zählfunktion soll für verwendet werden
Eine stdClass ist keine davon. Der einfachere / schnellste Weg, um das zu erreichen, wonach Sie suchen, ist
Dies verwendet die PHP- Funktion get_object_vars , die die Eigenschaften eines Objekts als Array zurückgibt . Sie können dieses Array dann mit der Zählfunktion von PHP verwenden.
quelle
get_object_vars()
auf einem ,stdClass
die in Folge um ein Array zu einem Objekt vom Gießen wird ein leeres Array ergeben. Das Casting derstdClass
Instanz in ein Array funktioniert dagegen überall.Das Objekt hat keine 30 Eigenschaften. Es hat eines, ein Array mit 30 Elementen. Sie benötigen die Anzahl der Elemente in diesem Array.
quelle
An count () ist hier nichts auszusetzen. "Trends" ist der einzige Schlüssel, der in diesem Fall gezählt wird. Sie können Folgendes versuchen:
Oder:
Oder vielleicht sogar:
quelle
Verwenden Sie einfach diese
Die Variable
$i
ist die Anzahl der Schlüssel.quelle
Zähle normale Arrya oder Objekt
Zählen Sie mehrdimensionale Arrya oder Objekte
quelle
count()
Funktion funktioniert mit Array. Wenn Sie jedoch die Länge des Objekts zählen möchten, können Sie diese Methode verwenden.quelle