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

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

PHPz
PHPz원래의
2023-04-27 15:54:232092검색

PHP에서 2차원 배열은 여러 개의 배열을 포함하는 배열을 의미합니다. 즉, 배열의 요소는 배열이며 그 형식은 다음과 같습니다.

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

2차원 배열에서는 중복 요소가 발생할 수 있습니다. . 이 경우 중복된 항목을 제거해야 합니다. 그렇다면 체중을 줄이는 방법은 무엇입니까?

방법 1: array_unique 함수를 사용하세요

array_unique 함수는 배열에서 중복된 값을 제거할 수 있지만 1차원 배열에만 사용할 수 있으므로 2차원 배열에서 처리해야 합니다. . 구체적인 아이디어는 다음과 같습니다.

2차원 배열의 각 하위 배열을 반복하고 이를 문자열로 변환한 후 새 배열에 저장할 수 있습니다. 그런 다음 새 배열이 중복 제거되고 최종 결과는 중복이 제거된 2차원 배열입니다.

코드는 다음과 같이 구현됩니다.

function unique_array($array) {
    $temp = array();
    foreach ($array as $key => $value) {
        $temp[$key] = implode(',', $value);
    }
    $temp = array_unique($temp);
    $result = array();
    foreach ($temp as $key => $value) {
        $result[$key] = explode(',', $value);
    }
    return $result;
}

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

$result = unique_array($students);
print_r($result);

출력 결과는 다음과 같습니다.

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 张三
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => 李四
            [age] => 19
        )

    [2] => Array
        (
            [id] => 3
            [name] => 王五
            [age] => 20
        )

)

방법 2: array_reduce 함수 사용

array_reduce 함수는 2차원 배열을 1차원 배열로 병합하고 중복 제거 작업을 수행할 수 있습니다. 그들을. 구체적인 아이디어는 다음과 같습니다.

먼저 2차원 배열의 각 하위 배열을 문자열로 변환하고 새 배열에 저장할 수 있습니다. 그런 다음 array_reduce 함수를 사용하여 새 배열을 문자열로 결합하고 array_unique 함수를 사용하여 문자열을 중복 제거합니다. 마지막으로 분해 기능을 사용하여 중복 제거된 문자열을 2차원 배열로 변환합니다.

코드 구현은 다음과 같습니다.

function unique_array($array) {
    $temp = array();
    foreach ($array as $key => $value) {
        $temp[$key] = implode(',', $value);
    }
    $result = array_reduce($temp, function($carry, $item){
        if (!in_array($item, $carry)) {
            $carry[] = $item;
        }
        return $carry;
    }, array());
    $result = array_map(function($item) {
        return explode(',', $item);
    }, $result);
    return $result;
}

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

$result = unique_array($students);
print_r($result);

출력 결과는 다음과 같습니다.

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 张三
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => 李四
            [age] => 19
        )

    [2] => Array
        (
            [id] => 3
            [name] => 王五
            [age] => 20
        )

)

Summary

위는 PHP에서 2차원 배열의 중복을 제거하는 두 가지 방법입니다. 두 방법 모두 PHP의 내장 기능을 사용하며 구체적인 구현 아이디어는 비교적 간단합니다. array_reduce 함수를 사용할 때, 중복 제거된 문자열을 2차원 배열로 변환하려면 array_map 함수를 사용해야 한다는 점에 유의해야 합니다.

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

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