English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 2차원 배열에서 중복 항목을 제거하는 방법【각 키 값을 유지】

이 글은 PHP 이차원 배열에서 중복 제거 메서드를 설명합니다. 여러분께 공유하여 참고하십시오. 다음과 같습니다:

다음과 같은 이차원 배열을 대상으로 중복 제거를 요구합니다:

$arr = array(
     '0' => array(
          'name' => 'james',
          'age' =>30,
          ),
     '1=> array(
          'name' => 'susu',
          'age' =>26,
          ),
     '2=> array(
          'name' => 'james',
          'age' =>30,
          ),
     'new' => array(
          'name' => 'kube',
          'age' =>37,
          ),
     'list' => array(
          'name' => 'kube',
          'age' =>27,
          ),
     );

1、 이차원 배열 내의 일차원 배열의 값이 완전히 동일하지 않아야 합니다. 중복된 항목을 제거합니다:

코드如下:

<?php
$arr = array(
     '0' => array(
          'name' => 'james',
          'age' =>30,
          ),
     '1=> array(
          'name' => 'susu',
          'age' =>26,
          ),
      '2=> array(
          'name' => 'james',
          'age' =>30,
          ),
      'new' => array(
          'name' => 'kube',
          'age' =>37,
          ),
      'list' => array(
          'name' => 'kube',
          'age' =>27,
          ),
      );
printf("Before tranform the array:<br>");  //원래의 배열을 출력합니다.
print_r($arr);
echo "<br/>";
function more_array_unique($arr = array()){
  foreach($arr[0] as $k => $v){
    $arr_inner_key[] = $k;  //먼저 두차원 배열 내의 내부 배열의 키 값을 한차원 배열에 기록합니다.
  }
  foreach ($arras $k => $v){
    $v = join(",", $v);  //하위 차원 제거: implode()도 사용할 수 있습니다.
    $temp[$k] = $v;   //원래의 키 값을 유지합니다. $temp[]는 원래 키 값을 유지하지 않습니다.
  }
  printf("After split the array:<br>");
  print_r($temp);  //분할된 배열을 출력합니다.
  echo"<br/>";
  $temp = array_unique($temp);  //중복 제거: 중복된 문자열을 제거합니다.
  foreach ($tempas $k => $v){
    $a = explode(",", $v);  //분할된 재조합 예: Array( [0] => james [1] => 30 )
    $arr_after[$k] = array_combine($arr_inner_key, $a); //원래의 키와 값이 다시 결합됩니다.
  }
  //ksort($arr_after);//정렬이 필요하다면: ksort를 사용하여 배열을 정렬(원래 키 값 key를 유지) , sort는 키 값을 유지하지 않습니다.
  return $arr_after;
}
$arr_new = more_array_unique($arr); //printf("중복 제거 배열:<br>");
print_r($arr_new);
배열 변환 전:
echo "<br/>";
?>

출력 결과:

원래 배열  //) [
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ] => Array ( [name] => james [age]=>20 ) [new] => Array ( [name] => kube [age] => 3[list] =>Array ( [name] => kube [age] => 37 ) 27 ) )
배열을 분할한 후: //구분 후 배열
Array ( [0] => james,30 [1] => susu,26 [2] => james,30 [new] =>kube,37 [list] => kube,27 )
중복 제거 배열: //중복 제거 후 배열
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) [list] => Array ( [name] => kube [age] => 27 ) )

2、 두차원 배열 내의 일차원 배열이 특정 키 값을 동일하게 할 수 없으므로 중복 항목을 제거합니다:

특정 키 값을 대상으로 중복 제거합니다

<?php
$arr= array(……); //위와 같은 두차원 배열
functionsecond_array_unique_bykey($arr, $key){
  $tmp_arr = array();
  foreach($arr as $k => $v)
  {
    if(in_array($v[$key], $tmp_arr))  //search $v[$key]가 $tmp_arr 배열에 존재하는지 확인합니다. 존재하면 true를 반환합니다
    {
      unset($arr[$k]); //변수를 소멸합니다. $tmp_arr에 동일한 값이 있으면 해당 값을 제거합니다
    }
    else {
      $tmp_arr[$k] = $v[$key]; //다른 값을 이 배열에 저장합니다
    }
  }
  //ksort($arr); //ksort 함수는 배열을 정렬합니다(원래 키 값 key를 유지합니다) sort는 키 값을 유지하지 않습니다
  return $arr;
  }
  $key ='name';
  $arr_key = second_array_unique_bykey($arr,$key);
  printf(\"As for the givenkey-%s:<br>\$
  print_r($arr_key);}}
  echo "<br/>";
?>

출력 결과:

제공된 키에 대해->name:
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) )

PS: 이 사이트에는 두 가지 간단하고 실용적인 온라인 텍스트 중복 제거 도구가 있습니다. 여러분에게 추천드립니다:

온라인 중복 제거 도구:
http://tools.jb51.net/code/quchong

온라인 텍스트 중복 제거 도구:
http://tools.jb51.net/aideddesign/txt_quchong

PHP 관련 내용에 더 많은 관심을 가진 독자는 이 사이트의 특집을 확인할 수 있습니다:《PHP 배열(Array)操作技巧大全》、《PHP 일반적인 투어 알고리즘 및 기술 요약》、《php 문자열(string) 사용 요약》、《php 일반적인 함수 및 기술 요약》、《PHP 오류 및 예외 처리 방법 요약》、《PHP 기본 문법入门教程》、《php 객체 지향 프로그래밍入门教程》、《php+mysql 데이터베이스操作入门教程》 및 《php常见数据库操作技巧汇总》

이 문서에서 설명된 내용이 여러분의 PHP 프로그램 설계에 도움이 되길 바랍니다.

선언: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권자에게 소유됩니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공編集 처리를하지 않으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용을 발견하시면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(보고할 때는 #을 @으로 변경하십시오. 신고하고 관련 증거를 제공하시면, 사실이 확인되면 이 사이트는 즉시 저작권 침해 내용을 삭제합니다。)

좋아하는 것