Ich habe ein Array:
$array = array(1,2,3,4,5);
Wenn ich den Inhalt des Arrays ausgeben würde, würden sie folgendermaßen aussehen:
array(5) {
[0] => int(1)
[1] => int(2)
[2] => int(3)
[3] => int(4)
[4] => int(5)
}
Wenn ich bestimmte Schlüssel durchschleife und deaktiviere, wird der Index vollständig aufgebockt.
foreach($array as $i => $info)
{
if($info == 1 || $info == 2)
{
unset($array[$i]);
}
}
Wenn ich jetzt einen weiteren Dump machen würde, würde es so aussehen:
array(3) {
[2] => int(3)
[3] => int(4)
[4] => int(5)
}
Gibt es eine geeignete Möglichkeit, das Array zurückzusetzen, damit seine Elemente wieder auf Null basieren?
array(3) {
[0] => int(3)
[1] => int(4)
[2] => int(5)
}
Ich habe eine andere interessante Methode:
Jetzt werden die $ -Array-Schlüssel zurückgesetzt.
quelle
Verwenden Sie
array_splice
eher alsunset
:Arbeitsprobe hier .
quelle
foreach
Schleife. Verwenden Sie den Standardi Loop
und setzen Sie i nach einem Spleiß einfach zurück. Funktioniert auchWorking sample here.
nicht.Nur ein Zusatz.
Ich weiß, dass dies alt ist , aber ich wollte eine Lösung hinzufügen, von der ich nicht sehe, dass ich sie mir ausgedacht habe. Ich habe diese Frage auf der Suche nach einer anderen Lösung gefunden und mir nur gedacht: "Nun, während ich hier bin."
Zuallererst ist Neals Antwort gut und großartig, nachdem Sie Ihre Schleife ausgeführt haben. Ich würde es jedoch vorziehen, alle Arbeiten auf einmal zu erledigen. Natürlich musste ich in meinem speziellen Fall mehr arbeiten als in diesem einfachen Beispiel, aber die Methode gilt immer noch. Ich habe gesehen, wo ein paar andere
foreach
Loops vorgeschlagen haben , aber das lässt dich nach der Arbeit aufgrund der Natur des Tieres immer noch zurück. Normalerweise schlage ich einfachere Dinge vorforeach
, aber in diesem Fall ist es am besten, sich an gute altmodischefor loop
Logik zu erinnern . Einfach benutzeni
! Um den entsprechenden Index beizubehalten, subtrahieren Sie einfachi
nach jedem Entfernen eines Array-Elements.Hier ist mein einfaches Arbeitsbeispiel :
Wird ausgegeben:
Dies kann viele einfache Implementierungen haben. Zum Beispiel erforderte mein genauer Fall das Halten des neuesten Elements im Array basierend auf mehrdimensionalen Werten. Ich zeige dir was ich meine:
Wird ausgegeben:
Wie Sie sehen, manipuliere ich $ i vor dem Spleiß, während ich versuche, das vorherige und nicht das aktuelle Element zu entfernen.
quelle
Späte Antwort aber nach PHP 5.3 könnte es so sein;
quelle
Oder Sie können eine eigene Funktion erstellen, die das Array als Referenz übergibt.
Dann müssen Sie nur noch ...
... und jetzt sind Sie
$array
ohne die Werte, die Sie eingegeben haben,$unsets
und die Tasten werden zurückgesetztquelle
100% arbeiten für mich! Nach nicht gesetzten Elementen im Array können Sie dies zum erneuten Indizieren des Arrays verwenden
quelle
Ich benutze
$arr = array_merge($arr);
, um ein Array neu zu gründen. Einfach und unkompliziert.quelle
In meiner Situation musste ich eindeutige Schlüssel mit den Array-Werten beibehalten, daher habe ich nur ein zweites Array verwendet:
quelle
unset($arr1)
die es NICHT verfügbar machen, um in Ihrer Schleife zu iterieren. 2) Ihnen fehlt das Semikolon in der vorletzten Zeile. Dieses Code-Snippet wird nicht ausgeführt.