php數組中移除元素的方法:1、透過“unset($array[1]);”方式移除數組元素;2、透過“array_splice($array, 1, 1);”方式移除數組元素。
本文操作環境:Windows7系統、PHP7.1版,DELL G3電腦
引言
##PHP的數組,說白了就是一個映射的鍵值對集合。那麼如何從陣列元素中刪除元素呢?你肯定先想到遍歷數組,然後找到目標項,然後刪除。 我看到有同學將要刪除的元素 = null,這並不起作用,因為 null 也是作為值存在的。並不能移除元素。 本文就專門說說移除陣列元素的方法。 學習時間大致上說,移除陣列元素,有兩個常用方法,一個是 unset 函數,一個是 array_splice 函數。 array_splice 什麼時間使用?就是你拿到的是值,卻不知道其索引,就要用這個了。unset 函數
請注意,使用 unset 函數不會重新建立索引,陣列不會洗牌。如果你想要在刪除元素後重新建立索引,那就執行 array_values,傳回的陣列就是重新編排過索引的了。並且所有索引被設定成預設從0開始的數字。 舉例說明:$array = [0 => "a", 1 => "b", 2 => "c"]; unset($array[1]);執行此操作後,陣列 $array 的值如下:
[ [0] => a [2] => c ]可以注意到陣列索引沒有變更。 【推薦學習:
PHP影片教學】
array_splice 函數##這個函數移除元素後,關聯數組的對應關係不會改變,此函數的參數形式:
array array_splice( array &$input, int $offset[, int $length = 0[, mixed $replacement]] )
用來把陣列中的一部分去掉並用其它值取代。如果最後的參數replaement不傳,就是預設為把offset 開始的如果是數字索引,傳回的陣列會重新編排索引值:
$array = [0 => "a", 1 => "b", 2 => "c"]; array_splice($array, 1, 1);
傳回的值:
[ [0] => a [1] => c ]
可以看到索引被重新編排了。
再深一步
上面說的兩個範例,都是單一元素的刪除。下面說說移除多個數組元素。
unset / arraysplice 用起來太繁瑣了,要一個一個地操作。如果我們知道了陣列元素的鍵,或值,則可以使用 array_diff / array_diff_key 來進行批次操作。
array_diff 函數
例如已知要刪除的元素的值,可以像下面這樣移除:
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = array_diff($array, ["a", "c"]);
<br/>
結果輸出:
[ [1] => b ]
陣列的索引並不會被重建。
array_diff_keys 函數
如果已知要刪除元素的索引,可以透過下面這樣刪除:
$array = [0 => "a", 1 => "b", 2 => "c"]; $array = array_diff_key($array, [0 => "xy", "2" => "xy"]);
執行後輸出:
[ [1] => b ]
索引沒有重建。
寫在最後
本文我們透過幾個範例,示範了陣列移除元素的方式,不要再一個 for 迴圈走遍天下了。 PHP 提供了許多有利於減少冗餘程式碼的函數工具,我們應該要用起來。
以上是php 陣列中怎麼移除元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!