>  기사  >  백엔드 개발  >  중복을 제거하기 위해 객체에 'array_unique'를 사용할 수 있습니까?

중복을 제거하기 위해 객체에 'array_unique'를 사용할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 14:29:02783검색

Can You Use `array_unique` with Objects to Remove Duplicates?

객체에 array_unique 사용

배열은 프로그래밍의 기본 데이터 구조이며 배열에 대해 수행해야 하는 작업이 있는 경우가 많습니다. 일반적인 작업 중 하나는 중복 요소를 제거하는 것입니다. 기본 데이터 유형의 배열의 경우 array_unique 함수를 사용할 수 있습니다. 그러나 객체를 다룰 때는 상황이 좀 더 복잡해집니다.

문제

병합한 후 중복 제거해야 하는 Role 객체가 포함된 여러 배열이 있다고 상상해 보십시오. 객체용으로 특별히 설계된 array_unique와 유사한 방법을 사용하여 이를 달성할 수 있는 방법이 있습니까?

해결책

예, 다음과 같이 객체와 함께 array_unique를 사용할 수 있습니다. SORT_REGULAR 플래그를 지정합니다. 이렇게 하면 객체 ID가 아닌 속성을 기준으로 객체를 비교합니다.

<code class="php">class MyClass {
    public $prop;
}

$foo = new MyClass();
$foo->prop = 'test1';

$bar = $foo;

$bam = new MyClass();
$bam->prop = 'test2';

$test = array($foo, $bar, $bam);

print_r(array_unique($test, SORT_REGULAR));</code>

출력:

Array (
    [0] => MyClass Object
        (
            [prop] => test1
        )

    [2] => MyClass Object
        (
            [prop] => test2
        )
)

중요 참고:

객체와 함께 array_unique를 사용할 때 엄격한 비교("===")가 아닌 "==" 비교를 사용한다는 점에 유의하는 것이 중요합니다. 즉, 속성은 동일하지만 개체 ID가 다른 두 개체는 중복된 것으로 간주되지 않습니다. 따라서 엄격한 비교가 필요한 경우 대체 접근 방식이 필요할 수 있습니다.

위 내용은 중복을 제거하기 위해 객체에 'array_unique'를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.