2011-03-06 90 views
11

我需要一個像array_unique這樣的函數來處理數組中的數組。陣列內陣列的array_unique

如此 - 應該是平等的,但輸出「不等於」:

<?php 
$arr=array(array('a',1),array('a',2)); 
$arr2=array_unique($arr); 
if($arr2==$arr){ 
    echo "equal"; 
} 
else{ 
    echo "not equal"; 
} 
?> 

應該如何代碼進行更改來獲得輸出「平等」?

+0

人,這始終出現。閱讀[手冊](http://www.php.net/manual/en/function.array-unique.php),它說:「請注意,array_unique()不適用於多維數組。」 – BoltClock 2011-03-06 17:00:37

+2

我要求「喜歡」的解決方案,請閱讀我的問題 – Yosef 2011-03-06 17:16:01

+0

我不明白你的意思是什麼「嗨,就像數組中的數組的array_unique。」 – BoltClock 2011-03-06 17:31:14

回答

31

您應該修改您的呼叫array_unique,讓它包含SORT_REGULAR標誌。

$arr2 = array_unique($arr, SORT_REGULAR); 
2

如果你想測試,如果外部陣列具有獨特的條目,那麼第一個字符串化在內的內容進行比較:

$arr1 = array_map("serialize", $arr); 
$arr2 = array_unique($arr1); 
if ($arr2 == $arr1) { 
-1
function array_unique_when_values_are_serializable($main_array) { 
    return array_map('unserialize', array_values(array_unique(array_map('serialize', $main_array)))); 
} 
+1

請解釋你的答案。 SO的存在是爲了教導用戶,而不僅僅是回答問題。 – Machavity 2015-04-03 20:08:29