gelöschte Array Elemente sind wieder da (array_filter)
TaiSon
- php
0 dedlfix0 TS0 dedlfix
0 Tabellenkalk
$var = array_filter($var);
hier lösche ich alle leere Array Elemente
print_r ($var);
hier sind sie weg
for($i=0; $i < count($var); $i++)
{
$zweiterunde[$i] = $var[$i];
}
hier sind sie wieder da
Tach!
hier lösche ich alle leere Array Elemente
hier sind sie weg
hier sind sie wieder da
Und nun? Ich kann dir versichern, dass PHP sie nicht hinterrücks wieder einbaut oder auch nur vorübergehend entfernt hat. Die Ursache ihres Wiederauftauchens liegt in deinem Code. Allerdings nicht in den gezeigten Zeilen. Mit mehr Kontrollausgaben an den Stellen, an denen das Array verwendet wird, sollte zur Ursache führen.
dedlfix.
Hallo,
$var = array_filter($var);
hier lösche ich alle leere Array Elemente
print_r ($var);
hier sind sie weg
for($i=0; $i < count($var); $i++) { $zweiterunde[$i] = $var[$i]; }
hier sind sie wieder da
Aus den Codefragmenten kann man nur sehen, dass die for-Schleife falsch ist an der Stelle.
Wenn vorher aus dem Index-Kreis des Arrays einzelne Elemente entfernt wurden, kann man anschließend nicht in der gezeigten Art mit for arbeiten.
Grüße TS
Tach!
Aus den Codefragmenten kann man nur sehen, dass die for-Schleife falsch ist an der Stelle.
Wenn vorher aus dem Index-Kreis des Arrays einzelne Elemente entfernt wurden, kann man anschließend nicht in der gezeigten Art mit for arbeiten.
Ah ja, das wird das Problem sein. »Array keys are preserved.«
Man bekäme Hinweise darauf, wenn man das error_reporting auf E_ALL (und display_errors auf 1) stehen hat. Dann kommen Notice-Meldungen für Zugriffe auf nicht vorhandene Elemente. foreach wäre die bessere Variante. Die for-Schleife kommt wegen des count() außerdem nicht an die Elemente mit höheren Schlüsselwerten. Wenn 0 bis 4 drin waren und Nummer 1 und 2 gefiltert wurden, dann liefert count() eine 3 und da das for nur bis <3 geht, kommt es bei Nummer 3 und 4 nicht vorbei.
dedlfix.
Hallo,
hier lösche ich alle leere Array Elemente
Wie kommen da überhaupt leere Elemente ins Array? Vielleicht kann man das schon vermeiden?
Gruß
Kalk