>백엔드 개발 >PHP 문제 >PHP의 2차원 배열에서 중복을 제거하는 방법

PHP의 2차원 배열에서 중복을 제거하는 방법

PHPz
PHPz원래의
2023-04-19 09:20:11557검색

인터넷의 발전으로 PHP는 가장 인기 있는 프로그래밍 언어 중 하나가 되었습니다. PHP 개발에서는 배열의 데이터 구조를 사용해야 하는 경우가 많습니다. 실제 개발에서는 어레이에 대해 중복 제거 작업을 수행해야 하는 경우가 많습니다. 이 기사에서는 PHP의 2차원 배열에서 중복을 제거하는 방법을 소개합니다.

2차원 배열은 여러 개의 배열로 구성된 큰 배열입니다. 이러한 배열의 중복을 제거해야 하는 경우 PHP에서 array_unique() 함수를 사용해야 합니다. 그러나 2차원 배열에서 중복된 항목을 제거하기 위해 array_unique() 함수를 직접 사용하면 원하는 효과를 얻을 수 없습니다.

아래는 중복 항목을 제거해야 하는 2차원 배열의 예입니다.

$arr = array(
    array('id'=>1, 'name'=>'Tom'),
    array('id'=>2, 'name'=>'Jerry'),
    array('id'=>3, 'name'=>'Bob'),
    array('id'=>1, 'name'=>'Tom')
);

다음과 같이 array_unique() 함수를 사용하여 중복을 제거하면 다음과 같습니다.

$arr = array_unique($arr);

그러면 실행 결과가 예상과 다르다는 것을 알 수 있습니다. 2차원 배열에서 중복 항목을 올바르게 제거하려면 다음 방법을 사용해야 합니다.

방법 1:

먼저 중복 제거가 필요한 배열을 문자열로 변환한 다음 array_unique() 함수를 사용하여 중복을 제거합니다. 마지막으로 결과를 PHP 배열로 변환합니다.

$str = '';
foreach ($arr as $k => $v) {
    $str .= implode(',', $v) . ';';
}
$str = implode(',', array_unique(explode(';', trim($str, ';'))));
$arr = array();
foreach (explode(';', $str) as $k => $v) {
    $arr[$k] = explode(',', $v);
}
print_r($arr);

이 방법은 2차원 배열에서 중복된 항목을 제거할 수 있지만 더 번거롭고 효율적이지 않습니다.

방법 2:

PHP에서 다른 함수 array_column()을 사용할 수 있습니다. 이 함수는 2차원 배열에서 모든 필드를 추출하고 1차원 배열을 반환할 수 있습니다.

$arr = array(
    array('id'=>1, 'name'=>'Tom'),
    array('id'=>2, 'name'=>'Jerry'),
    array('id'=>3, 'name'=>'Bob'),
    array('id'=>1, 'name'=>'Tom')
);
$idArr = array_column($arr, 'id');
$countArr = array_count_values($idArr);
foreach ($arr as $k => $v) {
    if ($countArr[$v['id']] > 1) {
        unset($arr[$k]);
    }
}
print_r($arr);

이 방법은 비교적 간단하며 두 가지 기능만 사용하면 됩니다. 먼저 array_column() 함수를 사용하여 2차원 배열에 있는 id 필드의 모든 값을 추출한 다음 array_count_values() 함수를 사용하여 이 값을 계산합니다. 마지막으로 원래 배열을 순회합니다. $idArr 배열에서 해당 ID 개수가 1보다 크면 항목을 제거해야 함을 의미합니다.

위의 두 가지 방법에서 볼 수 있듯이 2차원 배열의 중복 제거는 1차원 배열보다 약간 더 번거롭습니다. 그러나 적절한 방법을 채택하면 비교적 쉽게 중복 항목을 제거할 수 있습니다.

위 내용은 PHP의 2차원 배열에서 중복을 제거하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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