In PHP ist die Funktion array_slice ein übliches Werkzeug, mit dem ein Unterarray aus einem Array extrahiert wird. Sein Funktionsprototyp ist wie folgt:
array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
Wo der Parameter $ Länge verwendet wird, um die Anzahl der zu abgefangenen Elemente anzugeben. Wenn $ Länge jedoch 0 oder NULL beträgt, ist das Verhalten unterschiedlich. In diesem Artikel wird der Unterschied zwischen Array_Slice in diesen beiden Fällen ausführlich analysiert.
$ Array : Das Eingabearray.
$ offset : Wo beginnt mit Abfangen, negative Zahlen werden unterstützt.
$ Länge : Die Anzahl der abgefangenen Elemente, die Standardnull, bedeutet, dass er bis zum Ende des Arrays abgefangen wird.
$ PREIVERVE_KEYS : Ob den Schlüsselnamen des ursprünglichen Arrays aufbewahrt werden soll.
Wenn Sie Array_Slice aufrufen, wird PHP von $ Offset bis zum Ende des Arrays abfangen, wenn kein Parameter $ länge übergeben wird oder der in IS NULL übergebene Wert ist.
Beispiel:
$arr = [1, 2, 3, 4, 5];
$result = array_slice($arr, 2, NULL);
print_r($result);
Ausgabe:
Array
(
[0] => 3
[1] => 4
[2] => 5
)
Erläuterung: Beginnend aus Index 2, Abfangen zum Ende des Arrays.
Wenn $ Länge explizit auf 0 eingestellt ist, gibt Array_Slice ein leeres Array zurück. Das heißt, egal wie lange das Array ist, die abgefangene Länge ist Null, was bedeutet, dass keine Elemente zurückgegeben werden.
Beispiel:
$arr = [1, 2, 3, 4, 5];
$result = array_slice($arr, 2, 0);
print_r($result);
Ausgabe:
Array
(
)
Erläuterung: Geben Sie die Länge auf 0 an und fangen keine Elemente ab.
Längenparameter | Rückgabeergebnis | veranschaulichen |
---|---|---|
NULL | Alle Elemente vom Offset bis zum Ende des Arrays | Standardverhalten, alle verbleibenden Elemente abfangen |
0 | Leeres Array | Fangen Sie die Länge von 0 ab und das Ergebnis ist ein leeres Array |
Wenn Sie den Schwanz des Arrays abfangen möchten, wird empfohlen, den Parameter $ Länge wegzulassen oder explizit Null zu übergeben.
Wenn Sie vermeiden möchten, versehentlich leere Arrays zurückzugeben, achten Sie darauf, dass Sie $ Länge nicht auf 0 einstellen.
Machen Sie bei dynamisch bestandenen Parametern Typ -Urteile, um zu vermeiden, dass Passing 0s die Ergebnisse beeinflusst.
$arr = ['a' => 1, 'b' => 2, 'c' => 3];
$result = array_slice($arr, 1, NULL, true);
print_r($result);
Ausgabe:
Array
(
[b] => 2
[c] => 3
)
Hier wird Null übergeben, um alle verbleibenden Elemente abzufangen und gleichzeitig den ursprünglichen Schlüsselnamen beizubehalten.
PHP Offizielle Dokumentation: https://gitbox.net/manual/en/function.array-slice.php