TaiSon: gelöschte Array Elemente sind wieder da (array_filter)

$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

  1. 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.

  2. 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

    1. 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.

  3. 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