count(array()) inf for Schleife nach array_unique() ein Bug?

  • Themenstarter Themenstarter Lukasz
  • Beginndatum Beginndatum
L

Lukasz

Hallo

Ich habe eine Script gebastelt, welches mir aus dem Endergebniss einer fertigen Seite die Keywords heraussucht. Und zwar so in etwa

1. Replace aller HTML Tags.
2. Head Tag Weg!
Jetzt beleibt mir der reine Text.
3. Replace aller Sonderzeichen Punkte Kommas etc.
Jetzt habe ich einen Reinen Text, den ich durch die Friezeichen explode.

PHP:
$text = explode(" ",$text);

Das Ergebniss ist natürlich ein Array der ungefähr so aussieht.

ARRAY(bla,bla,bla, , ,bla,....)

Damit ich keine Doppelten Einträge erhalte, gehe ich einfach her und sage
PHP:
$text = array_unique($text);

Dadurch werden alle doppelten Einträge gelöscht.

frage ich ab wieviel Elemente mein array hat.
PHP:
echo count($text); // Ergeniss 122

So und jetzt kommt was unerwartetes.
PHP:
for($i=0;$i<count($text);$i++){
if (!empty($text["$i"]) && strlen($text["$i"]) > 4) { // damit 1. Keine Leerzeichen entstehen und 2. Keine Wörter wie ich und usw.. als Keywords ausgerechnet werden.
$keword .= $text["$i"].", "; 
}
}

Mich wunder jetzt eine einzige Sache. entferne ich das $text = array_unique($text); wird die For Schleife anteilig der Elemente durchlaufen. Anders aber las ich sie drin wird die Schleife nur 40 mal durchlaufen, und der Rest der Elemente wird einfach ignoriert!

Ich habe erst gedacht ich mach einen Fehler. Passiert ja mal.

Dann habe ich das ganze so zusmman gebastelt.

PHP:
echo count($text); // Ergeniss 122
$durch = 0;
for($i=0;$i<count($text);$i++){
$durch++;
if (!empty($text["$i"]) && strlen($text["$i"]) > 4) { // damit 1. Keine Leerzeichen entstehen und 2. Keine Wörter wie ich und usw.. als Keywords ausgerechnet werden.
$keword .= $text["$i"].", "; 
}
}
echo $durch; // Ausgabe 40

ein Bug?

Bau ich array_unique aus Zack count liefert 180 und durch liefert 180

unter PHP 5 getstet.

print_r($text); liefert jedoch wiederum 122 * =>"..."; ? also korrekt. Ausserdem ist auufallend, dass array_unique Leerstring nich entfernt. also " " | " " | " " schliesslich sind es auch doppelte!

Mein Verdacht
So und wenn diese eine Weile in der Forschleife vorkommen, (hintereinander) bricht diese ab!
 
Zuletzt bearbeitet von einem Moderator:
Ich kann das Verhalten hier mit einem ähnlichen Skript nicht reproduzieren. Wäre gut, wenn du das vollständige Skript samt Eingabedaten hier angibst.
 
Zurück