Sie machen das unset() von folgender Bedingung abhängig:
if ($NQ[$j]>1){
Nun ist aber jedes Element des Arrays ein Text und damit wahrscheinlich größer als 1. Meinen Sie vielleicht (value($NQ[$j])>1)
?
Ich denke, dass es nciht am unset()
scheitert. Vielmehr denke ich, dass der Filter nicht das tut, was Sie erwarten. Fügen Sie ein debug()
ein, um die Funktion zu prüfen:
debug($NQ[$j]);
unset($NQ[$j]);
debug($NQ);
Beachten Sie auch, dass sie die Länge des Arrays durch ein unset()
ändert. Wenn Sie also das erste Element aus dem Array geworfen haben ($j=0
), dann sieht das Array wie folgt aus:
['NQ2','NQ3','NQ4','NQ5','NQ6','NQ7','NQ8','NQ9','NQ10','NQ11','NQ12','NQ13','NQ14','NQ15','NQ16','NQ17','NQ18','NQ19','NQ20']
Wenn Sie nun $j=1
löschen, dann wird NQ3 entfernt, es bleibt also
['NQ2','NQ4','NQ5','NQ6','NQ7','NQ8','NQ9','NQ10','NQ11','NQ12','NQ13','NQ14','NQ15','NQ16','NQ17','NQ18','NQ19','NQ20']
Kurzum würde Ihr Code alle ungeraden Einträge löschen und ab der Hälfte nichts mehr löschen.