去掉陣列中的某一部分並用其它值取代

array_splice

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

array_splice 去掉陣列中的某一部分並用其它值取代

說明

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

array 陣列中由 offsetlength 指定的單元去掉,如果提供了 replacement 參數,則用其中的單元取代。

注意:

array 中的數字鍵名不被保留。

注意: 如果 replacement 不是陣列,會被 型別轉換 成陣列 (例如: (array) $replacement)。 當傳入的 replacement 是個對像或者 null,會導致未知的行為出現。

參數

array

輸入的陣列。

offset

如果 offset 為正,則從 array 陣列中該值指定的偏移量開始移除。

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

length

如果省略 length,則移除陣列中從 offset 到結尾的所有部分。

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

如果指定了 length 並且為負值,則移除部分停止於陣列末尾該數量的單元。

如果設定了 length 為零,不會移除單元。

小技巧

當給出了 replacement 時要移除從 offset 到陣列末尾所有單元時,用 count($input) 作為 length

replacement

如果給出了 replacement 陣列,則被移除的單元被此陣列中的單元替代。

如果 offsetlength 的組合結果是不會移除任何值,則 replacement 陣列中的單元將被插入到 offset 指定的位置。

注意:

不保留替換陣列 replacement 中的鍵名。

如果用來替換 replacement 只有一個單元,那麼不需要給它加上 array() 或方括號,除非該單元本身就是一個陣列、一個對像或者 null

返回值

返回一個包含有被移除單元的陣列。

更新日誌

版本 說明
8.0.0 length 現在可為空(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 幾個以不同表達式實現相同效果的 array_splice() 例子

以下表達式是相同的:

<?php

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

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

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

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

// 在 $input 的索引 $x 處替換值
$input[$x] = $y// 對於鍵名和偏移量等值的陣列
array_splice($input$x1$y);
?>

參見

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *