PHP에서는 배열을 처리하고 연산해야 하는 경우가 많습니다. 때로는 배열에서 중복된 요소를 제거해야 하는 경우가 있습니다. 다음은 2차원 배열에 대한 중복 제거 방법입니다.
방법 1: array_map 및 직렬화 함수 사용
array_map 함수는 배열의 각 요소에 콜백 함수를 적용할 수 있으며 콜백 함수는 새 요소를 반환합니다. 직렬화 함수를 사용하여 각 요소를 직렬화한 다음 PHP의 array_unique 함수를 사용하여 직렬화된 요소를 중복 제거하고 마지막으로 직렬화된 요소를 원래 요소로 역직렬화할 수 있습니다.
샘플 코드:
function uniqueArray($array) { return array_map("unserialize", array_unique(array_map("serialize", $array))); } // 示例数据 $data = array( array("id" => 1, "name" => "apple"), array("id" => 2, "name" => "banana"), array("id" => 1, "name" => "apple"), array("id" => 3, "name" => "pear") ); // 执行去重操作 $result = uniqueArray($data); // 输出结果 print_r($result);
출력 결과:
Array ( [0] => Array ( [id] => 1 [name] => apple ) [1] => Array ( [id] => 2 [name] => banana ) [3] => Array ( [id] => 3 [name] => pear ) )
위 코드에서는 먼저 array_map 함수를 사용하여 배열의 각 요소를 직렬화한 다음 array_unique 함수를 사용하여 직렬화된 요소를 직렬화하는 UniqueArray 함수를 정의합니다. 요소는 중복 제거되고 마지막으로 직렬화된 요소는 unserialize 함수를 사용하여 원래 요소로 역직렬화됩니다.
방법 2: array_reduce 함수 및 array_merge 함수 사용
array_map 함수 및 serialize 함수 외에도 array_reduce 함수 및 array_merge 함수를 사용하여 2차원 배열의 요소를 평면화하여 1차원 배열을 형성할 수도 있습니다. 그런 다음 array_unique 함수를 사용하여 1차원 배열의 중복을 제거하고 마지막으로 array_map 함수를 사용하여 1차원 배열을 다시 2차원 배열로 변환합니다.
샘플 코드:
function uniqueArray($array) { return array_map("unserialize", array_unique(array_map("serialize", array_reduce($array, "array_merge", array())))); } // 示例数据 $data = array( array("id" => 1, "name" => "apple"), array("id" => 2, "name" => "banana"), array("id" => 1, "name" => "apple"), array("id" => 3, "name" => "pear") ); // 执行去重操作 $result = uniqueArray($data); // 输出结果 print_r($result);
출력 결과:
Array ( [0] => Array ( [id] => 1 [name] => apple ) [1] => Array ( [id] => 2 [name] => banana ) [3] => Array ( [id] => 3 [name] => pear ) )
위 코드에서는 먼저 array_reduce 함수와 array_merge 함수를 사용하여 2차원 배열의 요소를 1차원 배열로 평면화하는 UniqueArray 함수를 정의합니다. , 그런 다음 array_map 함수를 사용하여 1차원 배열의 요소를 직렬화, 중복 제거 및 역직렬화하고 마지막으로 1차원 배열을 다시 2차원 배열로 변환합니다.
요약
위의 두 가지 방법 모두 2차원 배열을 중복 제거할 수 있지만 방법 1은 중복 제거 작업 중에 원본 데이터의 유형을 유지하기 위해 직렬화를 사용하는 반면, 방법 2는 두 가지가 필요합니다. 1D 배열의 요소를 평면화하고 그런 다음 1D 배열을 다시 2D 배열로 변환합니다. 어떤 방법을 사용할지는 실제 요구 사항과 데이터 양에 따라 선택할 수 있습니다.
위 내용은 PHP는 2차원 배열에서 중복을 제거합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!