首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 陣列元素刪除:unset() vs array_splice() 差異解析

     編輯:PHP 綜合知識

兩種刪除方式比較

特性unset()array_splice()
鍵值重組❌ 保留原鍵值,產生「洞」✅ 重新索引 (0,1,2...)
回傳值無被移除的元素陣列
多元素刪除需迴圈單次呼叫支援長度參數
關聯陣列適用✅ 適合⚠️ 會重置數字鍵,字串鍵保留

unset() 實例與陷阱

$colors = ["red", "green", "blue", "yellow"];
unset($colors[1]);  // 刪除 "green"

var_dump($colors);
/*
array(3) {
  [0]=> "red"
  [2]=> "blue"      // 鍵值跳號!
  [3]=> "yellow"
}
*/

echo $colors[2];  // "blue" - 非直覺
echo $colors[1];  // Notice: Undefined offset

修正:重新索引

$colors = array_values($colors);  // 重建 0,1,2 索引
// 或
$colors = array_merge($colors);   // 同效果

array_splice() 實例

$colors = ["red", "green", "blue", "yellow"];
$removed = array_splice($colors, 1, 1);  // 從索引 1 刪除 1 個

var_dump($colors);   // ["red", "blue", "yellow"] - 索引重組為 0,1,2
var_dump($removed);  // ["green"] - 回傳被刪除元素

進階用法:替換元素

$arr = [1, 2, 3, 4];
// 刪除索引 1-2,插入新元素
array_splice($arr, 1, 2, ['a', 'b', 'c']);
// 結果:[1, 'a', 'b', 'c', 4]

選擇指南

  • 關聯陣列 / 指定鍵刪除 → unset($arr[$key])
  • 數值索引陣列 / 需保持連續索引 → array_splice()
  • 需取得被刪除值 → array_splice()
  • 批次刪除多個連續元素 → array_splice()

效能補充

小型陣列差異微乎其微。大型陣列 (10萬+) 時,array_splice() 需重建陣列較慢,若頻繁刪除建議考慮資料結構調整或使用 SplFixedArray。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved