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

PHPz
풀어 주다: 2023-04-19 10:01:47
원래의
556명이 탐색했습니다.

PHP에서는 배열을 다뤄야 하는 경우가 많은데, 자주 묻는 질문 중 하나가 2차원 배열에서 중복된 값을 제거하는 방법입니다. 이 문제는 해결하기 어렵지 않습니다.array_map,array_unique,array_filter등과 같은 PHP에서 제공하는 일부 배열 함수를 사용할 수 있습니다. 다음으로 2차원 배열에서 중복된 값을 삭제하는 방법을 살펴보겠습니다.array_maparray_uniquearray_filter等等。下面,就让我们来了解一下如何实现删除二维数组重复值的方法。

什么是二维数组?

二维数组是指一个数组中的元素也是一个数组,它可以表示为一个矩阵。在 PHP 中,我们可以使用以下方式创建一个二维数组:

$students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18) );
로그인 후 복사

上面的代码中,我们创建了一个$students数组,其中每个元素也是一个数组,包含nameage两个键值对。这个数组可以理解为一个学生信息的表格。

删除重复值的方法

接下来,我们介绍若干种删除二维数组重复值的方法:

方法一:使用 foreach 循环

function remove_duplicate_by_foreach($arr){ $result = array();//定义一个新数组,用来存放去重后的数据 foreach($arr as $key => $value){ $flag = false; foreach($result as $val){ if($value == $val){ $flag = true; break; } } if(!$flag){ //如果数据不重复,则将其添加到新数组中 array_push($result, $value); } } return $result; } $students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18), array('name' => '张三', 'age' => 18) ); print_r(remove_duplicate_by_foreach($students));
로그인 후 복사

上面的代码中,我们首先定义了一个空的$result数组,然后使用两个 foreach 循环遍历原数组$arr,对于其中的每个元素$value,在$result数组中查找是否存在相同的元素,如果不存在,则将其添加到$result数组中。

这种方法比较简单易懂,但是效率比较低,尤其是当数据较多时,遍历的时间会变得很长。

方法二:使用 array_map 和 array_unique 函数

function remove_duplicate_by_array_map($arr){ $temp = array_map("serialize", $arr);//将数组中的每个元素都序列化 $result = array_unique($temp);//去重操作 $new_array = array(); foreach ($result as $value) {//反序列化操作 array_push($new_array, unserialize($value)); } return $new_array; } $students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18), array('name' => '张三', 'age' => 18) ); print_r(remove_duplicate_by_array_map($students));
로그인 후 복사

上面的代码中,我们先使用array_map函数将原数组$arr中的每个元素都序列化成字符串,然后使用array_unique函数对序列化后的字符串进行去重操作,最后再使用 foreach 循环反序列化成正常的数组元素。

这种方法相比于方法一,效率稍高一些,但是序列化和反序列化的过程可能会影响性能。

方法三:使用 array_filter 函数

function remove_duplicate_by_array_filter($arr){ $unique_arr = array_unique(array_map('serialize',$arr));//先将数组序列化再去重 return array_filter($unique_arr, function($var){//回调函数进行反序列化 return unserialize($var); }); } $students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18), array('name' => '张三', 'age' => 18) ); print_r(remove_duplicate_by_array_filter($students));
로그인 후 복사

上面的代码中,我们先使用array_map函数将原数组$arr中的每个元素都序列化成字符串,然后使用array_unique函数对序列化后的字符串进行去重操作,最后再使用array_filter函数实现反序列化操作。

这种方法相比于前两种方法,代码量更少,效率也更高。

总结

在 PHP 中,删除二维数组中的重复值并不难,可以使用array_maparray_uniquearray_filter

2차원 배열이란 무엇인가요?

2차원 배열은 배열의 요소도 배열이며 행렬로 표현될 수 있음을 의미합니다. PHP에서는 다음 방법을 사용하여 2차원 배열을 생성할 수 있습니다: rrreee위 코드에서 $students배열을 생성합니다. 여기서 각 요소는 를 포함하는 배열이기도 합니다. 이름age는 두 개의 키-값 쌍입니다. 이 배열은 학생 정보의 테이블로 이해될 수 있습니다.

중복 값 삭제 방법

다음으로 2차원 배열에서 중복 값을 삭제하는 여러 가지 방법을 소개합니다.

방법 1: foreach 루프 사용

rrreee에서 위의 코드에서는 먼저 빈 $result배열을 정의한 다음 두 개의 foreach 루프를 사용하여 각 요소 $value에 대해 원래 배열 $arr를 순회합니다. code>에서 $result배열에 동일한 요소가 있는지 확인하고, 없으면 $result배열에 추가하세요. 이 방법은 비교적 간단하고 이해하기 쉽지만 효율성이 상대적으로 낮습니다. 특히 데이터가 많은 경우 탐색 시간이 매우 길어집니다.

방법 2: array_map 및 array_unique 함수 사용

rrreee위 코드에서는 먼저 array_map함수를 사용하여 원본 배열 $arr 각 요소는 문자열로 직렬화됩니다. 그런 다음 array_unique함수를 사용하여 직렬화된 문자열을 중복 제거하고, 마지막으로 foreach 루프를 사용하여 이를 일반 배열 요소로 역직렬화합니다. 이 방법은 방법 1보다 약간 더 효율적이지만 직렬화 및 역직렬화 프로세스가 성능에 영향을 미칠 수 있습니다.

방법 3: array_filter 함수 사용

rrreee위 코드에서는 먼저 array_map함수를 사용하여 원본 배열 $arr의 각 요소를 필터링합니다. > 모두 문자열로 직렬화된 다음 array_unique함수를 사용하여 직렬화된 문자열을 중복 제거하고 마지막으로 array_filter함수를 사용하여 역직렬화 작업을 구현합니다. 처음 두 가지 방법에 비해 이 방법은 코드가 적고 더 효율적입니다.

요약

PHP에서는 2차원 배열에서 중복된 값을 삭제하는 것이 어렵지 않습니다. array_map, array_unique code>, array_filter및 기타 구현할 함수입니다. 보다 효율적인 처리 결과를 얻으려면 필요에 따라 다양한 방법을 선택하십시오.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!