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

PHP 刪除陣列指定元素兩種方法差異比較(array_splice vs unset)

     編輯:PHP 綜合知識

方法一:array_splice(重新索引)

<?php
$arr = [1, 3, 5, 7, 8];
$key = array_search(3, $arr); // 1
if ($key !== false) array_splice($arr, $key, 1);
var_dump($arr);
/* 輸出:
array(4) {
  [0]=> int(1)
  [1]=> int(5)
  [2]=> int(7)
  [3]=> int(8)
}
*/
?>

特點:重新排序數字索引,刪除後陣列連續 0..n-1。

方法二:unset(保留原索引)

<?php
$arr = [1, 3, 5, 7, 8];
foreach ($arr as $k => $v) {
    if ($v === 3) unset($arr[$k]);
}
var_dump($arr);
/* 輸出:
array(4) {
  [0]=> int(1)
  [2]=> int(5)   // 索引 1 消失,跳到 2
  [3]=> int(7)
  [4]=> int(8)
}
*/
?>

特點:保留原鍵名,產生「稀疏陣列」。

選擇指南

需求推薦
需連續索引、後續用 for 迴圈array_splice
鍵名有業務含義(如 ID)、需保留關聯unset
關聯陣列(字串鍵)unset(array_splice 不支援字串鍵)
大量刪除、效能敏感unset 較快(無重建)

補充:array_values 重新索引

$arr = array_values($arr); // 將稀疏陣列壓縮為 0..n-1

多值刪除

// 刪除所有值為 3 的元素
$arr = array_filter($arr, fn($v) => $v !== 3); // 保留索引
$arr = array_values(array_filter($arr, fn($v) => $v !== 3)); // 重新索引
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved