首頁 >後端開發 >PHP問題 >php 陣列中怎麼移除元素

php 陣列中怎麼移除元素

藏色散人
藏色散人原創
2021-03-22 09:51:104031瀏覽

php數組中移除元素的方法:1、透過“unset($array[1]);”方式移除數組元素;2、透過“array_splice($array, 1, 1);”方式移除數組元素。

php 陣列中怎麼移除元素

本文操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn