array_splice

(PHP 4, PHP 5, PHP 7, PHP 8)

array_splice 去掉數(shù)組中的某一部分并用其它值取代

說明

array_splice(
    array &$array,
    int $offset,
    ?int $length = null,
    mixed $replacement = []
): array

array 數(shù)組中由 offsetlength 指定的單元去掉,如果提供了 replacement 參數(shù),則用其中的單元取代。

注意:

array 中的數(shù)字鍵名不被保留。

注意: 如果 replacement 不是數(shù)組,會被 類型轉(zhuǎn)換 成數(shù)組 (例如: (array) $replacement)。 當(dāng)傳入的 replacement 是個(gè)對象或者 null,會導(dǎo)致未知的行為出現(xiàn)。

參數(shù)

array

輸入的數(shù)組。

offset

如果 offset 為正,則從 array 數(shù)組中該值指定的偏移量開始移除。

如果 offset 為負(fù),則從 array 末尾倒數(shù)該值指定的偏移量開始移除。

length

如果省略 length,則移除數(shù)組中從 offset 到結(jié)尾的所有部分。

如果指定了 length 并且為正值,則移除這么多單元。

如果指定了 length 并且為負(fù)值,則移除部分停止于數(shù)組末尾該數(shù)量的單元。

如果設(shè)置了 length 為零,不會移除單元。

小技巧

當(dāng)給出了 replacement 時(shí)要移除從 offset 到數(shù)組末尾所有單元時(shí),用 count($input) 作為 length。

replacement

如果給出了 replacement 數(shù)組,則被移除的單元被此數(shù)組中的單元替代。

如果 offsetlength 的組合結(jié)果是不會移除任何值,則 replacement 數(shù)組中的單元將被插入到 offset 指定的位置。

注意:

不保留替換數(shù)組 replacement 中的鍵名。

如果用來替換 replacement 只有一個(gè)單元,那么不需要給它加上 array() 或方括號,除非該單元本身就是一個(gè)數(shù)組、一個(gè)對象或者 null

返回值

返回一個(gè)包含有被移除單元的數(shù)組。

更新日志

版本 說明
8.0.0 length 現(xiàn)在可為空(nullable)。

范例

示例 #1 array_splice() 例子

<?php
$input 
= array("red""green""blue""yellow");
array_splice($input2);
var_dump($input);

$input = array("red""green""blue""yellow");
array_splice($input1, -1);
var_dump($input);

$input = array("red""green""blue""yellow");
array_splice($input1count($input), "orange");
var_dump($input);

$input = array("red""green""blue""yellow");
array_splice($input, -11, array("black""maroon"));
var_dump($input);
?>

以上例程會輸出:

array(2) {
  [0]=>
  string(3) "red"
  [1]=>
  string(5) "green"
}
array(2) {
  [0]=>
  string(3) "red"
  [1]=>
  string(6) "yellow"
}
array(2) {
  [0]=>
  string(3) "red"
  [1]=>
  string(6) "orange"
}
array(5) {
  [0]=>
  string(3) "red"
  [1]=>
  string(5) "green"
  [2]=>
  string(4) "blue"
  [3]=>
  string(5) "black"
  [4]=>
  string(6) "maroon"
}

示例 #2 幾個(gè)以不同表達(dá)式實(shí)現(xiàn)相同效果的 array_splice() 例子

以下表達(dá)式是相同的:

<?php

// 添加兩個(gè)新元素到 $input
array_push($input$x$y);
array_splice($inputcount($input), 0, array($x$y));

// 移除 $input 中的最后一個(gè)元素
array_pop($input);
array_splice($input, -1);

// 移除 $input 中第一個(gè)元素
array_shift($input);
array_splice($input01);

// 在 $input 的開頭插入一個(gè)元素
array_unshift($input$x$y);
array_splice($input00, array($x$y));

// 在 $input 的索引 $x 處替換值
$input[$x] = $y// 對于鍵名和偏移量等值的數(shù)組
array_splice($input$x1$y);
?>

參見