三種方法:1、用array_unique,語法「array_unique(數組)」;2、用array_flip(),語法「array_flip(array_flip(數組))」;3、用foreach和兩個空數組,語法「foreach($arr as $k1=>$v1){$r1[$v1]=$k1;}foreach($r1 as $k2=>$v2){$r2[$v2]=$ k2;}」。
本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦
移除陣列中相同的值,就是移除陣列中的重複值。 PHP數組去重有多種方法,以下要來跟大家介紹一下。
方法1:使用去重函數array_unique()
#array_unique() 函數用來移除陣列中重複的值。如果兩個或更多個數組值相同,只保留第一個值,其他的值被移除。
註解:被保留的陣列將保持第一個陣列項目的鍵名類型。
array_unique(array,sortingtype)
參數 | 描述 |
---|---|
#array | 必要。規定數組。 |
sortingtype | 可選。規定排序類型。可能的值:
|
傳回值:傳回過濾後的陣列。
範例:移除相同值
<?php $arr1 =array("a"=>"Cat",2,"b"=>"Dog","c"=>"Cat",2,3,4,3); var_dump($arr1); $arr2=array_unique($arr1); var_dump($arr2); ?>
#方法2:利用array_flip()函數
array_flip() 函數用於反轉/交換數組中的鍵名和對應關聯的鍵值。
而陣列的鍵名(key)是唯一的、不會重複存在的。
利用這個特性,如果數組中有二個值是一樣的,那麼反轉數組後會保留最後一個鍵和值,這樣既可間接的實現數組的去重。
<?php $arr =array("a"=>"Cat",2,"b"=>"Dog","c"=>"Cat",2,3,4,3); var_dump($arr); $arr1 = array_flip($arr);//先反转一次,去掉重复值 var_dump($arr1); $arr2 = array_flip($arr1);//再反转回来,得到去重后的数组 var_dump($arr2); ?>
方法1與方法2的差異:
用array_flip()得到的是重複元素最後的鍵與值,用array_unique得到的是重複元素中第一個鍵和值。
方法3:利用foreach語句和兩個空數組
還是利用鍵名唯一的特性,利用foreach語句和兩個空數組來反轉兩次數組的鍵名和鍵值的位置即可。
<?php header("content-type:text/html;charset=utf-8"); function f($arr){ var_dump($arr); $res1=[]; $res2=[]; foreach($arr as $k1=>$v1){ $res1[$v1]=$k1; } foreach ($res1 as $k2 => $v2){ $res2[$v2]=$k2; } echo "去重后的数组:"; var_dump($res2); } $arr=array(1,2,3,4,5,4,3,2,1,0); f($arr); ?>
推薦學習:《PHP影片教學》
以上是php怎麼去除數組中相同的值的詳細內容。更多資訊請關注PHP中文網其他相關文章!