Löschen eines Array-Elements innerhalb der foreach-Schleife

7

Ich habe ein einfaches Array, das den Namen aller Länder und die Gesamtzahl der Nutzer enthält, die von jedem Land auf meiner Website registriert sind. Es ist in etwa so:

%Vor%

Und ich versuche, Array-Elemente (Länder) zu löschen, die 0 Benutzer haben.

Ich habe es mit diesem Code versucht und es funktioniert nicht:

%Vor%

Was ist falsch an diesem Code?

    
Florin Frătică 20.01.2012, 14:28
quelle

3 Antworten

24

Wenn Sie unset($row) haben, entfernen Sie nur die lokale Variable.

Stattdessen hole den Schlüssel und entferne das:

%Vor%     
NikiC 20.01.2012, 14:31
quelle
3

Foreach erstellt Kopien der Schlüssel / Werte in dem Array, das Sie durchlaufen, also wird nur die lokale Kopie unscharf geschaltet, nicht das Original, das sich tatsächlich im Array befindet. Greifen Sie entweder direkt auf das Array zu

%Vor%

oder verwenden Sie eine Referenz, deaktivieren Sie sie und filtern Sie anschließend NULL-Elemente:

%Vor%     
Marc B 20.01.2012 14:32
quelle
0

Weil $ row der Wert ist, nicht das gesamte Element.

Versuchen Sie:     foreach ($ country als $ key = & gt; $ wert) {       if ($ row ['total'] == 0) {         nicht gesetzt ($ country [$ key]);       }     }

    
quelle

Tags und Links