教你刪除數組最後一位「php刪除數組最後一個元素使用什麼方法」

引言

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

3分鐘短文 | 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-hant/n/269079.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-16 13:13
下一篇 2024-12-16 13:13

相關推薦

發表回復

登錄後才能評論