>  기사  >  백엔드 개발  >  PHP의 2차원 배열에서 특정 하위 배열을 삭제하는 방법

PHP의 2차원 배열에서 특정 하위 배열을 삭제하는 방법

PHPz
PHPz원래의
2023-04-20 13:51:46701검색

PHP 개발 과정에서 배열은 많은 양의 데이터를 쉽게 저장하고 표현할 수 있는 매우 중요한 데이터 유형입니다. 때로는 2차원 배열에서 특정 배열을 제거해야 하는 경우가 있습니다. 이 기사에서는 이 목적을 달성하기 위한 두 가지 방법을 소개합니다.

방법 1: array_filter 함수 사용

array_filter 함수는 PHP에 내장된 함수로, 배열의 요소를 필터링하는 데 사용됩니다. 이 함수를 사용하여 2차원 배열에서 특정 배열을 제거할 수 있습니다. 구체적인 구현은 다음과 같습니다.

function removeArray($arr, $remove)
{
    return array_filter($arr, function ($item) use ($remove) {
        return !in_array($item, $remove);
    });
}

위 코드에서는 두 개의 매개변수를 허용하는 RemoveArray라는 함수를 정의합니다.

  • $arr: 배열을 제거해야 하는 2차원 배열을 나타냅니다.
  • $remove: 제거해야 할 어레이 세트를 나타냅니다.

다음으로 array_filter 함수를 사용하여 $arr 배열을 필터링합니다. 콜백 함수에서는 in_array 함수를 사용하여 현재 순회하는 배열을 제거해야 하는지 여부를 결정합니다. 제거해야 하는 경우 false를 반환하고, 그렇지 않으면 true를 반환합니다. 마지막으로 필터링된 배열이 우리에게 필요한 결과입니다.

사용 사례:

$data = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'Jerry', 'age' => 18],
    ['name' => 'Andy', 'age' => 22],
    ['name' => 'John', 'age' => 25]
];

$remove = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'John', 'age' => 25]
];

$result = removeArray($data, $remove);

print_r($result);

출력 결과:

Array
(
    [1] => Array
        (
            [name] => Jerry
            [age] => 18
        )

    [2] => Array
        (
            [name] => Andy
            [age] => 22
        )

)

방법 2: array_udiff 함수 사용

또 다른 방법은 array_udiff 함수를 사용하는 것입니다. 이 함수는 배열의 차이 집합을 계산하는 데 사용됩니다. 콜백 함수를 사용자 정의하여 배열을 비교하여 필요한 기능을 얻을 수 있습니다.

구체적인 구현은 다음과 같습니다.

function removeArray($arr, $remove)
{
    return array_udiff($arr, $remove, function ($a, $b) {
        return ($a == $b) ? 0 : 1;
    });
}

위 코드에서는 방법 1과 유사하며 RemoveArray라는 함수를 정의합니다. 이 함수는 두 개의 매개 변수 $arr 및 $remove를 허용합니다. 이 매개 변수는 각각 배열을 제거해야 하는 배열 세트와 제거해야 하는 배열 세트를 나타냅니다.

array_udiff 함수를 사용하여 $arr 배열과 $remove 배열을 비교하고, 사용자 정의 함수를 실행하고, 배열의 요소를 비교하고 결과를 반환합니다.

사용 사례:

$data = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'Jerry', 'age' => 18],
    ['name' => 'Andy', 'age' => 22],
    ['name' => 'John', 'age' => 25]
];

$remove = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'John', 'age' => 25]
];

$result = removeArray($data, $remove);

print_r($result);

출력 결과:

Array
(
    [1] => Array
        (
            [name] => Jerry
            [age] => 18
        )

    [2] => Array
        (
            [name] => Andy
            [age] => 22
        )

)

요약하면 2차원 배열에서 특정 배열을 제거하는 방법에는 두 가지가 있는데, array_filter 함수와 array_udiff 함수를 사용하는 것입니다. 둘 다 일반적으로 사용되는 방법이며 어떤 방법을 사용할지는 필요에 따라 다릅니다.

배열에 동일한 하위 배열이 존재하는 경우, PHP에서 배열을 직접 비교할 수 없고 array_diff_assoc 함수를 사용해야 하기 때문에 방법 1(array_filter)이 제대로 작동하지 않는다는 점에 유의해야 합니다.

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

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