it-swarm.com.de

get_the_tags () durchläuft nicht die for/while-Schleife, sondern wird mit foreach

Ich habe gerade ein sehr merkwürdiges Problem mit Wordpress, das ich nicht verstehen kann, und ich hoffe, dass jemand hier Erfahrung damit hat, um es zu lösen.

Ich versuche, das von get_the_tags() zurückgegebene Array mit einer Standardschleife (nicht foreach) zu durchlaufen, aber wenn ich versuche, über den Index darauf zuzugreifen, gibt es nichts zurück. Gemäß dem Wordpress-Codex gibt get_the_tags() ein Array von Tag-Daten zurück, die dem Beitrag zugeordnet sind.

Seltsamerweise funktioniert eine foreach Struktur einwandfrei, wenn Sie damit umgehen. Indizieren tut es jedoch nicht.

Folgendes habe ich versucht:

$tags = get_the_tags();
$total = count($tags);
echo($total); // Returns 2

// This one does nothing    
for($i=0; $i<$total; $i++){
   echo($tags[$i]->name); // Does nothing
}

// This one works:
foreach($tags as $tag){
    echo($tag->name); // Prints the tags, as it should
}

Aus irgendeinem Grund funktioniert das obige Beispiel mit dem Index nicht , wenn es um get_the_tags() geht, aber es funktioniert in einer foreach-Schleife einwandfrei. Aber das ist noch nicht alles, was komisch ist. Die Verwendung von get_tags(), um alle Tags für das Blog in einem Array auf ähnliche Weise abzurufen, funktioniert in beiden Situationen einwandfrei!

Also zum Beispiel:

$tags = get_tags();
$total = count($tags);
echo($total); // Returns 4

for($i=0; $i<$total; $i++){
   echo($tags[$i]->name); // Prints the 4 tags
}

foreach($tags as $tag){
    echo($tag->name); // Prints the 4 tags
}

Beide geben Arrays von Tags gemäß dem Wordpress-Codex zurück. Was gibt es also für das oberste, das nicht mit einem Index arbeitet? Ich versuche, etwas zu tun, das Zugriff auf den Index erfordert (und mit mehr als einem Array zu tun hat, daher kann es kein foreach sein).

Hätte jemand Ideen, wie man das Problem beheben kann (oder zumindest auf die Daten zugreifen kann)? Hat jemand anderes dieses bizarre Problem erlebt?

1
Bitwize

get_the_tags () gibt ein Array zurück, aber die Indizes beginnen nicht bei 0, da es sich um die Term-IDs handelt.

1
user27457