php怎麼去除陣列中相同的值

2022-09-28 22:00:51

三種方法: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;}」。

php入門到就業線上直播課:進入學習
API 檔案、設計、偵錯、自動化測試一體化共同作業工具:

本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦

去除陣列中相同的值,就是去除陣列中的重複值。PHP陣列去重有多種方法,下面給大家介紹一下。

方法1:使用去重函數array_unique()

array_unique() 函數用於移除陣列中重複的值。如果兩個或更多個陣列值相同,只保留第一個值,其他的值被移除。

註釋:被保留的陣列將保持第一個陣列項的鍵名型別。

array_unique(array,sortingtype)
登入後複製
引數描述
array必需。規定陣列。
sortingtype可選。規定排序型別。可能的值:
  • SORT_STRING - 預設。把每一項作為字串來處理。
  • SORT_REGULAR - 把每一項按常規順序排列(Standard ASCII,不改變型別)。
  • SORT_NUMERIC - 把每一項作為數位來處理。
  • SORT_LOCALE_STRING - 把每一項作為字串來處理,基於當前區域設定(可通過 setlocale() 進行更改)。

返回值:返回過濾後的陣列。

範例:去除相同值

<?php
$arr1 =array("a"=>"Cat",2,"b"=>"Dog","c"=>"Cat",2,3,4,3);
var_dump($arr1);
$arr2=array_unique($arr1);
var_dump($arr2);
?>
登入後複製

1.png

方法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);
?>
登入後複製

2.png

方法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);
?>
登入後複製

3.png

推薦學習:《》

以上就是php怎麼去除陣列中相同的值的詳細內容,更多請關注TW511.COM其它相關文章!