Heim  >  Artikel  >  php教程  >  Analyse der Funktionen array_slice und array_splice in PHP

Analyse der Funktionen array_slice und array_splice in PHP

高洛峰
高洛峰Original
2017-03-18 16:10:031992Durchsuche

In diesem Artikel werden hauptsächlich die Funktionen array_slice und array_splice in PHP vorgestellt. Wenn Sie interessiert sind, können Sie sich die Funktionen array_slice und array_splice ansehen . array_splice kann auch durch ein neues Slice ersetzt werden. Die ursprüngliche Funktion zum Löschen von Slice-Positionen. Ähnlich den Methoden Array.prototype.splice und Array.prototype.slice in Javascript.

array_slice

Gibt den Subarray-Slice des Arrays mit dem angegebenen Index-Offset und der angegebenen Länge zurück.

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
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 direkt zurückgegeben werden. 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 > versetzt. Wenn die Länge nach der Verarbeitung immer noch kleiner als 0 ist, wird sie direkt zurückgegeben.

preserve_keys

Der Standardwert ist „false“. Die ursprüngliche Reihenfolge der numerischen Schlüsselwerte wird standardmäßig nicht beibehalten. Wenn sie auf „true“ gesetzt ist, wird die ursprüngliche Reihenfolge der numerischen Schlüsselwerte des Arrays verwendet wird beibehalten.

Anwendungsbeispiele

Ausführungsschritte

<?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;);

Verarbeitungsparameter: Offset, Länge

Bewegen Sie den Zeiger auf die durch den Offset angezeigte Position

Kopieren Sie Längenelemente beginnend mit dem Offset in das zurückgegebene Array

Das Betriebsablaufdiagramm lautet wie folgt

array_spliceAnalyse der Funktionen array_slice und array_splice in PHP

Löschen Es gibt Längenelemente in der Eingabe, beginnend mit dem Offset. Wenn ein Ersetzungsparameter vorhanden ist, verwenden Sie das Ersetzungsarray, um die gelöschten Elemente zu ersetzen.

array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement = array() ]] )
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.

Anwendungsbeispiel

Interpretation des Quellcodes

<?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");

In array_splice gibt es so einen Code:

array_splice Die Rückgabe der Funktion ist das gelöschte Slice. 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.

/* 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);
 }

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.

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website!

Weitere Artikel zur Analyse der Funktionen array_slice und array_splice in PHP finden Sie auf der chinesischen PHP-Website!

Verwandte Artikel:

PHP-Array-Funktionssequenz array_slice()

Verwendung der PHP-Array_slice-Funktion und detaillierte Erläuterung der Parameter

php array_slice nimmt eine Sequenzinstanz im Array heraus

Stellungnahme:
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