In der Vergangenheit wurden beim Entfernen leerer Werte aus einem Array die Verwendung dieser beiden Syntaxstrukturen erzwungen, um leere Elemente im Array zu löschen:
<?php foreach( $arr as $k=>$v){ if( !$v ) unset( $arr[$k] ); } ?>
Und ich fühle mich ziemlich gut dabei, aber es ist nicht sehr effizient. Ich habe es schon einmal versucht, zuerst $arr in ein Objekt umzuwandeln und es dann anhand der Eigenschaften des Objekts zu löschen, weil : foreach kopiert das aktuell bearbeitete Array. Bei jeder Operation wird eine Variable kopiert. Wenn zu viele foreach auf der Seite vorhanden sind, ist dies eine große Verschwendung.
Als ich im Internet herumstöberte, war ich überrascht, jemanden zu sehen, der die Verwendung von array_filter vorschlug. Ich schlug das Handbuch auf, warf einen Blick darauf und stellte fest, dass ich einen Schatzberg bewacht hatte, aber nicht wusste, wie man ihn benutzt. Die Funktion der Funktion
array_filter besteht darin, die Rückruffunktion zum Filtern des Arrays zu verwenden. Ich dachte immer, dass es nur von der Rückruffunktion verarbeitet werden kann, aber das habe ich nicht gefunden Im Handbuch finden Sie unten einen Satz. Wenn es keine Rückruffunktion gibt, werden Elemente mit einem falschen Wert standardmäßig gelöscht.
<?php $entry = array( 0 => 'foo', 1 => false, 2 => -1, 3 => null, 4 => '' ); print_r(array_filter($entry)); ?>
Der Ausgabewert ist:
Array ( [0] => foo [2] => -1 )
Es scheint, dass ich das Handbuch in Zukunft noch mehr lesen muss ... Genau wie array_slice auch eine gute Sache. Schade, dass mir das noch nie aufgefallen ist.
Anhang: Ein weiteres Beispiel
Kopieren Sie den CodeDer Code lautet wie folgt:
$strDelCodes = "A;B;;C;;C;D;;;D;D"; $rsArray = array_values(array_unique(array_diff (split (";", $strDelCodes), array (""))));
Der in gespeicherte Wert Die Array-Funktion $rsArray For: A B C D
array_values() gibt ein Array zurück, das alle Schlüsselwerte im angegebenen Array enthält, behält jedoch nicht die Schlüsselnamen bei.
Die Funktion array_diff() gibt das Differenzarray zweier Arrays zurück. Dieses Array enthält alle Schlüssel, die sich im verglichenen Array, aber in keinem der anderen Argumentarrays befinden.
Die Funktion array_unique() entfernt doppelte Werte aus einem Array und gibt das resultierende Array zurück. Wenn die Werte mehrerer Array-Elemente gleich sind, bleibt nur das erste Element erhalten und die anderen Elemente werden gelöscht.
Die Schlüsselnamen im zurückgegebenen Array bleiben unverändert. Die Funktion
array_merge() führt zwei oder mehr Arrays zu einem Array zusammen.
Wenn doppelte Schlüsselnamen vorhanden sind, ist der Schlüsselwert des Schlüssels der Wert, der dem letzten Schlüsselnamen entspricht (der spätere überschreibt den vorherigen). Wenn das Array numerisch indiziert ist, werden die Schlüsselnamen fortlaufend neu indiziert.
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung zum Löschen von Nullwertinstanzen in einem Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!