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

남자, 이것은 항상 온다. [manual] (http://www.php.net/manual/en/function.array-unique.php)을 읽으면 "array_unique()는 다차원 배열에서 작동하지 않습니다."라고 말합니다. – BoltClock

+2

"좋아요"해결책을 묻는 질문은 내 질문을 읽어보십시오 – Yosef

+0

"안녕하세요, array_unique 배열 내부의 배열처럼."무슨 뜻인지 이해가 안 돼요. – BoltClock

답변

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

답을 설명해주십시오. 그래서 단지 질문에 답하는 것이 아니라 사용자를 가르치는 것입니다. – Machavity