Heim > Artikel > Backend-Entwicklung > So segmentieren Sie ein PHP-Array
Die Funktionen array_slice und array_splice werden verwendet, um ein Slice des Arrays zu entfernen. array_splice hat auch die Funktion, die ursprünglich gelöschte Slice-Position durch ein neues Slice zu ersetzen. Ähnlich den Methoden Array.prototype.splice und Array.prototype.slice in Javascript.
array_slice
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
Gibt den Subarray-Slice des Arrays mit dem angegebenen Index-Offset und der angegebenen Länge zurück.
Parameterbeschreibung
Angenommen, die Länge des ersten Parameterarrays ist num_in.
Offset
Wenn Offset eine positive Zahl und kleiner als die Länge ist, beginnt das zurückgegebene Array beim Offset; wenn der Offset größer als die Länge ist, wird keine Operation ausgeführt und es wird direkt zurückgesandt. Wenn Offset eine negative Zahl ist, dann ist Offset = num_in+offset, wenn num_in+offset == 0, dann wird Offset auf 0 gesetzt.
Länge
Wenn die Länge kleiner als 0 ist, wird die Länge in num_in - offset + length umgewandelt; andernfalls, wenn offset+length > = num_in -offset. Wenn die Länge nach der Verarbeitung immer noch kleiner als 0 ist, wird sie direkt zurückgegeben.
preserve_keys
Die ursprüngliche Reihenfolge der numerischen Schlüsselwerte wird standardmäßig nicht beibehalten. Wenn die ursprüngliche Reihenfolge der numerischen Schlüsselwerte festgelegt ist des Arrays bleibt erhalten.
Verwandte Empfehlungen: „php array“
Verwendungsbeispiele
<?php $input = array("a", "b", "c", "d", "e"); $output = array_slice($input, 2); // returns "c", "d", and "e" $output = array_slice($input, -2, 1); // returns "d" $output = array_slice($input, 0, 3); // returns "a", "b", and "c" print_r(array_slice($input, 2, -1)); // array(0 => 'c', 1 => 'd'); print_r(array_slice($input, 2, -1, true)); // array(2 => 'c', 1 => 'd');
Schritte ausführen
·Verarbeitungsparameter: Offset, Länge
·Bewegen Sie den Zeiger an die Position, auf die der Offset zeigt
· Beginnend mit dem Offset kopieren Sie Längenelemente in das zurückgegebene Array
Das Operationsablaufdiagramm lautet wie folgt:
array_splice
array array_splice(array &$input,int $offset[, int $length = 0 [, mixed $replacement = array() ]])
Längenelemente beginnend mit dem Offset in der Eingabe löschen. Wenn ein Ersetzungsparameter vorhanden ist, verwenden Sie das Ersetzungsarray, um die gelöschten Elemente zu ersetzen.
Parameterbeschreibung
Die Offset- und Längenparameter in der Funktion array_splice werden genauso verwendet wie in der Funktion array_slice.
Ersatz
Wenn dieser Parameter festgelegt ist, verwendet die Funktion das Ersatzarray zum Ersetzen.
Wenn Offset und Länge angeben, dass keine Elemente entfernt werden müssen, wird die Ersetzung am Offset eingefügt.
Wenn die Ersetzung nur ein Element hat, brauchen Sie array() nicht, um es einzuschließen.
Verwendungsbeispiel
<?php $input = array("red", "green", "blue", "yellow"); array_splice($input, 2); // $input变为 array("red", "green") $input = array("red", "green", "blue", "yellow"); array_splice($input, 1, -1); // $input变为 array("red", "yellow") $input = array("red", "green", "blue", "yellow"); array_splice($input, 1, count($input), "orange"); // $input变为 array("red", "orange") $input = array("red", "green", "blue", "yellow"); array_splice($input, -1, 1, array("black", "maroon")); // $input为 array("red", "green", // "blue", "black", "maroon") $input = array("red", "green", "blue", "yellow"); array_splice($input, 3, 0, "purple"); // $input为 array("red", "green", // "blue", "purple", "yellow");
Interpretation des Quellcodes
In array_splice gibt es so einen Code:
/* Don't create the array of removed elements if it's not going * to be used; e.g. only removing and/or replacing elements */ if (return_value_used) { // 如果有用到函数返回值则创建返回数组,否则不创建返回数组 int size = length; /* Clamp the offset.. */ if (offset > num_in) { offset = num_in; } else if (offset < 0 && (offset = (num_in + offset)) < 0) { offset = 0; } /* ..and the length */ if (length < 0) { size = num_in - offset + length; } else if (((unsigned long) offset + (unsigned long) length) > (unsigned) num_in) { size = num_in - offset; } /* Initialize return value */ array_init_size(return_value, size > 0 ? size : 0); rem_hash = &Z_ARRVAL_P(return_value); }
Die Funktion array_splice gibt das gelöschte Slice zurück. Die Bedeutung dieses Codes besteht darin, dass, wenn array_splice einen Wert zurückgeben muss, das Rückgabearray erstellt wird, andernfalls nicht erstellt wird, um Platzverschwendung zu vermeiden. Dies ist auch ein kleiner Programmiertrick, der nur bei Bedarf zurückgegeben wird. Wenn beispielsweise $result = array_splice(...) in einer Funktion verwendet wird, ist return_value_used wahr.
Zusammenfassung
Dies ist das Ende dieses Artikels. Bei der täglichen Programmierung sollten Sie sich zunächst mit den speziellsten Situationen befassen, so wie Sie es bei der Implementierung dieser beiden Funktionen getan haben. Vermeiden Sie dann weiterhin unnötige Urteile; beantragen Sie neuen Speicherplatz nur, wenn Sie neue Variablen speichern müssen, da dies sonst zu Verschwendung führt.
Das obige ist der detaillierte Inhalt vonSo segmentieren Sie ein PHP-Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!