Hallo,
ich bin gerade an einer simplen Problem-Stellung, die ich so und ähnlich vermutlich schon 100 mal programmiert habe, verzweifelt. Ich weiß nicht, ob es sich um einen Bug in PHP handelt oder ich irgendetwas nicht berücksichtige. Bitte schaut Euch mal folgenden Code an:
Erwartet hätte ich, dass er für alle gefüllten Elemente in das innere IF-Statement geht und die dortige Verarbeitung vornimmt (Im Beispiel das echo ausgibt). Dadurch muss der Counter $ele_filled_counter irgendwann zwangsläufig den Wert von $line_anz erreichen und die Schleife verlassen werden. Das geschieht aber im aktuellen Beispiel nicht. Er läuft durch bis zum Index 4294967296 (4GB, offensichtlich habe ich einen 32-Bit Betriebssystem), welcher dann wieder auf Index 0 verweist. Dadurch findet er dann wieder gefüllte Elemente (die er beim ersten Durchlauf schon gezählt hat) und erst dann verlässt er dann irgendwann die Schleife. Der Count-Befehl liefert also ein anderes (höheres) Resultat, als der komplette Durchlauf sämtlicher denkbaren Elemente des Arrays und Prüfung mit ISSET(). WARUM?
Ich weiß, dass es weitere Möglichkeiten gibt (foreach-Schleife oder die Ermittlung des letzten Indizes im Array über key(), aber darum geht es mir nicht. Ich würde gerne verstehen, warum die Logik oben nicht funktioniert. Normalerweise tut sie das einwandfrei, auch bei Unset-Elementen in der Tabelle. Aktuell muss aber irgendein Spezial-Fall vorliegen, wo es nicht funktioniert.
Für Tipps schon im Voraus vielen Dank,
Michael
ich bin gerade an einer simplen Problem-Stellung, die ich so und ähnlich vermutlich schon 100 mal programmiert habe, verzweifelt. Ich weiß nicht, ob es sich um einen Bug in PHP handelt oder ich irgendetwas nicht berücksichtige. Bitte schaut Euch mal folgenden Code an:
PHP Code:
$line_anz = count(${$quell_tab_name});
if($line_anz)
{
$ele_counter = 0;
$ele_filled_counter = 0;
while($ele_filled_counter < $line_anz)
{
if(isset(${$quell_tab_name}[$ele_counter]))
{
echo "Hier wird das gefüllte Element weiterverarbeitet";
++$ele_filled_counter;
}
++$ele_counter;
}
}
Ich weiß, dass es weitere Möglichkeiten gibt (foreach-Schleife oder die Ermittlung des letzten Indizes im Array über key(), aber darum geht es mir nicht. Ich würde gerne verstehen, warum die Logik oben nicht funktioniert. Normalerweise tut sie das einwandfrei, auch bei Unset-Elementen in der Tabelle. Aktuell muss aber irgendein Spezial-Fall vorliegen, wo es nicht funktioniert.
Für Tipps schon im Voraus vielen Dank,
Michael
Comment