>  기사  >  백엔드 개발  >  PHP의 2차원 배열에 중복된 값이 있는지 확인하는 방법

PHP의 2차원 배열에 중복된 값이 있는지 확인하는 방법

PHPz
PHPz원래의
2023-04-26 14:21:151056검색

PHP 프로그래밍에서 배열은 여러 값을 저장하고 키를 통해 액세스할 수 있게 해주는 매우 중요한 데이터 유형입니다. 2차원 배열은 차원이 추가된 1차원 배열로, 더 복잡한 데이터 구조를 저장할 수 있습니다. 그런데 2차원 배열을 사용하는 과정에서 우리는 2차원 배열에 중복된 값이 있는지 어떻게 검출할 것인가 하는 문제에 종종 직면하게 된다. 이번 글에서는 2차원 배열에 중복된 값이 있는지 확인하는 방법을 자세히 소개하겠습니다.

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

2차원 배열에 중복된 값이 있는지 확인하는 방법을 소개하기 전에 먼저 2차원 배열이 무엇인지 이해해야 합니다. 위에서 간략히 소개한 것처럼 2차원 배열은 1차원 배열에 또 다른 차원을 추가합니다. 즉, 각 요소는 더 이상 단일 값이 아니라 배열입니다. 즉, 각 요소는 모든 유형의 문자열, 숫자, 부울 등이 될 수 있는 여러 값을 포함하는 배열입니다.

다음은 간단한 2차원 배열 예입니다.

$cars = array(
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);

이 예에서는 4개의 배열 요소를 포함하고 각 요소에 3개의 값을 포함하는 2차원 배열 $cars를 정의합니다. 다음 코드를 통해 $cars 배열의 첫 번째 요소의 첫 번째 값에 액세스할 수 있습니다.

echo $cars[0][0]; // 输出 Volvo

2. 2차원 배열에 중복된 값이 있는지 확인

실제 개발에서는 종종 확인해야 할 경우가 있습니다. 2차원 배열에 중복된 값이 있는지 여부 중복된 값이 있는지 여부. 이 문제를 해결하는 방법은 여러 가지가 있는데, 여기서는 그 중 두 가지를 소개합니다.

1. foreach 루프 중첩을 사용하세요

foreach 루프 중첩을 사용하여 2차원 배열의 각 요소를 순회하고 해당 값을 차례로 비교하세요. 구체적인 구현 단계는 다음과 같습니다.

① 중복 값 없이 요소를 저장하려면 빈 배열 $result를 정의합니다.

② foreach 루프를 사용하여 원래 2차원 배열 $source를 순회하고 각 요소를 차례로 꺼냅니다.

3 In 내부 루프에서 다시 foreach 루프를 사용하여 $result 배열을 순회하고 현재 요소가 $result 배열에 이미 저장된 각 요소와 동일한지 비교합니다.

4 동일하면 점프합니다. 내부 루프에서 벗어나 다음 요소를 계속 탐색합니다. 다른 경우 현재 요소를 $result 배열에 저장한 다음 루프를 종료합니다.

구체적인 코드는 다음과 같습니다.

$source = array(  // 原始的二维数组
  array('name'=>'Tom','age'=>18),
  array('name'=>'Jack','age'=>23),
  array('name'=>'Mary','age'=>21),
  array('name'=>'Tom','age'=>20),
  array('name'=>'Jim','age'=>32)
);

$result = array();  // 存放没有重复值的元素

foreach ($source as $value) {
  $flag = true;  // 标记是否存在重复值
  foreach ($result as $v) {
    if ($value['name'] == $v['name']) {
      $flag = false;
      break;
    }
  }
  if ($flag) {
    $result[] = $value;
  }
}

print_r($result); // 输出结果:Array ( [0] => Array ( [name] => Tom [age] => 18 ) [1] => Array ( [name] => Jack [age] => 23 ) [2] => Array ( [name] => Mary [age] => 21 ) [4] => Array ( [name] => Jim [age] => 32 ) )
위 코드에서는 먼저 빈 배열 $result를 정의한 다음 2계층 foreach 루프를 사용하여 원래 2차원 배열 $source를 순회합니다. 현재 요소의 이름 값이 $result 배열에 이미 존재하는 것으로 확인되면 현재 루프를 직접 종료하고 중복된 값이 없으면 계속해서 다음 요소를 탐색합니다. $ 결과 배열.

2. PHP에 내장된 배열 함수 array_unique를 사용하세요

PHP에는 배열에서 중복된 값을 제거하는 데 사용할 수 있는 배열 함수 array_unique가 내장되어 있습니다. 이 함수는 매우 간단합니다. 배열을 매개변수로 전달하기만 하면 모든 중복 값이 ​​제거된 새 배열을 반환합니다. array_unique 함수를 사용하여 2차원 배열에서 중복된 값을 제거하려면 다음 코드를 사용할 수 있습니다.

$source = array(  // 原始的二维数组
  array('name'=>'Tom','age'=>18),
  array('name'=>'Jack','age'=>23),
  array('name'=>'Mary','age'=>21),
  array('name'=>'Tom','age'=>20),
  array('name'=>'Jim','age'=>32)
);

$name_arr = array_column($source, 'name');  // 获取所有name值的数组
$unique_arr = array_unique($name_arr);  // 去重
$result = array();  // 存放没有重复值的元素
foreach ($source as $value) {
  if (in_array($value['name'], $unique_arr)) {
    $result[] = $value;
  }
}
print_r($result); // 输出结果:Array ( [0] => Array ( [name] => Tom [age] => 18 ) [1] => Array ( [name] => Jack [age] => 23 ) [2] => Array ( [name] => Mary [age] => 21 ) [4] => Array ( [name] => Jim [age] => 32 ) )
위 코드에서는 먼저 array_column 함수를 사용하여 이름 값을 얻습니다. ​모든 2차원 배열에서 array_unique 함수를 사용하여 중복된 값을 제거합니다. 다음으로 원래의 2차원 배열을 다시 반복하여 현재 요소의 이름 값이 $unique_arr에 존재하면 현재 요소를 $result 배열에 저장합니다.

요약:

위는 PHP 2차원 배열에 중복된 값이 있는지 확인하는 두 가지 방법입니다. 이 두 가지 방법을 통해 2차원 배열에 중복된 요소가 있는지 빠르게 확인할 수 있습니다. 그 중 PHP 내장 함수인 array_unique 함수를 사용하는 방법은 더 간단하지만 더 많은 컴퓨팅 리소스를 소비하는 반면, 두 가지 수준의 foreach 루프 중첩을 사용하는 방법은 더 유연하고 효율적입니다. 개발자는 특정 요구 사항에 따라 적합한 방법을 선택할 수 있습니다.

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

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