>  기사  >  백엔드 개발  >  PHP 2차원 배열 중복 제거 알고리즘

PHP 2차원 배열 중복 제거 알고리즘

高洛峰
高洛峰원래의
2017-01-14 15:01:281199검색

요구사항

이제 다음과 같은 2차원 배열 세트가 있습니다.

array(8) {
 [0]=>
 array(2) {
  ["name"]=>
  string(4) "name"
  ["value"]=>
  string(6) "青叶"
 }
 [1]=>
 array(2) {
  ["name"]=>
  string(5) "phone"
  ["value"]=>
  string(11) "13812341234"
 }
 [2]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_507[]"
  ["value"]=>
  string(12) "我是青叶"
 }
 [3]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_508[]"
  ["value"]=>
  string(6) "合肥"
 }
 [4]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_509[]"
  ["value"]=>
  string(3) "男"
 }
 [5]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(6) "足球"
 }
 [6]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(6) "棒球"
 }
 [7]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_511[]"
  ["value"]=>
  string(16) "2016-12-15T11:15"
 }
}

동일한 키 이름을 가진 배열의 값을 병합하고 두 번째 차원의 동일한 값을 사용하여 새 배열을 형성합니다.

예를 들어 위 코드에서 fields_510이라는 두 개의 2차원 배열을 축구와 야구의 값이 포함된 배열로 병합해야 합니다.

생각

배열이라고 하면 PHP에서 루프를 먼저 생각하기 때문에 버블 정렬과 유사한 루프 처리에 사용하는 것이 분명히 더 적합합니다. 하나씩 비교하고 마지막으로 다루기 쉽습니다.

코드

코드는 다음과 같습니다.

$public_info = 数组;
for ($i=0;$i<count($public_info);$i++) {
  for ($j=$i+1;$j<count($public_info);$j++) {
    if ($public_info[$j][&#39;name&#39;] == $public_info[$i][&#39;name&#39;]) {
      $public_info[$i][&#39;value&#39;] .= &#39;,&#39; . $public_info[$j][&#39;value&#39;];
      unset($public_info[$j]);
    }
  }
}

실행 결과:

array(7) {
 [0]=>
 array(2) {
  ["name"]=>
  string(4) "name"
  ["value"]=>
  string(6) "青叶"
 }
 [1]=>
 array(2) {
  ["name"]=>
  string(5) "phone"
  ["value"]=>
  string(11) "13812341234"
 }
 [2]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_507[]"
  ["value"]=>
  string(12) "我是青叶"
 }
 [3]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_508[]"
  ["value"]=>
  string(6) "合肥"
 }
 [4]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_509[]"
  ["value"]=>
  string(3) "男"
 }
 [5]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(13) "足球,棒球"
 }
 [7]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_511[]"
  ["value"]=>
  string(16) "2016-12-15T11:15"
 }
}

요약

요구 사항이 충족되면 배열을 만날 때마다 미리 만들어진 PHP 메소드 외에 가장 먼저 생각하는 것은 foreach인지 for인지에 관계없이 루프입니다. 위의 예는 제가 처리한 사용자 정의 양식을 편집하는 간단한 프로세스입니다. 내 프로젝트가 모든 사람에게 도움이 되기를 바랍니다.

PHP 2차원 배열 중복 제거 알고리즘에 관한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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