$arr = ["a"=>"Dog", "b"=>"Cat", "c"=>"Horse"];
unset($arr[array_search("Cat", $arr)]); // 刪除值為 "Cat" 的元素
print_r($arr);
// Array ( [a] => Dog [c] => Horse ) // 鍵名保持不變
array_search($needle, $haystack) 返回首個匹配值的鍵名(找不到返回 false)。unset($arr[$key]) 刪除該鍵名對應的元素,不重建索引(關聯鍵名保留,數值索引留空)。array_search("23", $arr, true) 區分類型,避免 "23" 匹配到整數 23。array_keys($arr, $val) 獲取所有鍵再批量 unset。array_search 返回 0,unset($arr[0]) 正常;但若未找到返回 false,unset($arr[false]) 等同 unset($arr[0]) 會誤刪首元素!務必先判斷:$key = array_search($val, $arr);
if ($key !== false) unset($arr[$key]);
$arr = array_diff($arr, ["Cat"]); // 返回新數組,數值鍵重排
區別:array_diff 重置數值索引,unset 保留原鍵名。