引言
PHP 數組操作,之前我們講了如何根據值,進行多維數組的排序。今天說一說,如何根據值,進行數組元素的刪除。

學習時間
假設有一個一維數組,單純的數字數組。為了簡化問題,我們假設數組元素沒有重複項。
$messages = [312, 401, 1599, 3, ...];那麼該如何移除 「401」這個元素呢?
最簡單的辦法,應該使用 array_search 和 unset 兩個函數完成,代碼這樣寫:
if (($key = array_search($del_val, $messages)) !== false) {
unset($messages[$key]);
}函數 array_search 是在數組中搜索給定的值,如果成功則返回相應的鍵名。 如果沒有找到匹配的值,則返回false。
我們使用變量 $key 獲取 array_search 的返回值,如果不是 false,那麼就是存在。然後調用 unset 函數進行刪除即可。
需要注意的是,比較運算符一定是使用「!==」這個不全等於號,否則如果返回了數組索引 0,也會被判斷為空,即 0 == false。
其他方法
換一種方法處理。我們嘗試使用 array_diff 函數,計算差集,可以刪除任意多個元素的值:
array_diff( [312, 401, 15, 401, 3], [401] )但是這個函數會有副作用,就是返回值是新的數組,保持索引鍵值不變。同時,原數組內容保持不變。
深入使用
上面我們給定的前提非常簡單,就是加入數組內都是不同的數據。實際應用中,很難保證這一點。除非是模型返回的主鍵,或者做了 unique 約束的字段,否則不能保證數據集內沒有相同的值。
手冊上也說了,這樣根據值移除數據內所有對應元素的,應該使用 array_keys 函數。
foreach (array_keys($messages, 401, true) as $key) {
unset($messages[$key]);
}函數 array_keys 第三個參數為可選項,用於標記是否嚴格篩選模式。
寫在最後
本文通過不同的方法,演示了如何從數組中,根據值移除相應元素的方法。
Happy coding :_)
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/269079.html
微信掃一掃
支付寶掃一掃