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라는 함수를 정의합니다.
다음으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!