Heim > Backend-Entwicklung > PHP-Problem > So segmentieren Sie ein PHP-Array

So segmentieren Sie ein PHP-Array

爱喝马黛茶的安东尼
Freigeben: 2023-02-25 12:16:02
Original
3516 Leute haben es durchsucht

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 ]] )
Nach dem Login kopieren

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 => &#39;c&#39;, 1 => &#39;d&#39;);
print_r(array_slice($input, 2, -1, true)); // array(2 => &#39;c&#39;, 1 => &#39;d&#39;);
Nach dem Login kopieren

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:

So segmentieren Sie ein PHP-Array

array_splice

array array_splice(array &$input,int $offset[, int $length = 0 [, mixed $replacement = array() ]])
Nach dem Login kopieren

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");
Nach dem Login kopieren

Interpretation des Quellcodes

In array_splice gibt es so einen Code:

/* Don&#39;t create the array of removed elements if it&#39;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);
 }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage