>  기사  >  백엔드 개발  >  PHP를 사용하여 값이 2D 배열에 있는지 확인하는 방법

PHP를 사용하여 값이 2D 배열에 있는지 확인하는 방법

PHPz
PHPz원래의
2023-04-14 20:03:111079검색

PHP에서 2차원 배열은 매우 일반적인 데이터 구조입니다. 실제 개발을 하다 보면 특정 값이 2차원 배열인지 확인해야 할 때가 있습니다. 이 기사에서는 PHP를 사용하여 값이 2차원 배열에 있는지 확인하는 방법을 소개합니다.

  1. 방법 1: foreach 루프 사용

foreach 루프를 사용하여 2차원 배열을 순회하고 각 값을 하나씩 비교하여 해당 값이 2차원 배열에 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

샘플 코드는 다음과 같습니다.

function in_array_2d($value, $array) {
    foreach ($array as $item) {
        if (in_array($value, $item)) {
            return true;
        }
    }
    return false;
}

위 코드의 구현은 비교적 간단합니다. PHP에 내장된 in_array 함수를 사용하여 값이 배열에 있는지 확인하고 foreach 루프를 사용하여 두-배열을 순회합니다. 차원 배열.

사용 방법도 매우 간단합니다. 판단할 값과 2차원 배열을 전달하면 됩니다. 예:

$array = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9),
);
$value = 5;
if (in_array_2d($value, $array)) {
    echo '值存在于数组中';
} else {
    echo '值不存在于数组中';
}

이 예에서 $array는 2차원 배열이고 $value는 값입니다. "배열에 값이 존재합니다"에 대한 실행 결과가 나타납니다.

  1. 방법 2: array_walk_recursive 함수를 사용합니다.

array_walk_recursive 함수를 사용하여 2차원 배열의 모든 요소를 ​​순회합니다. 값이 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

샘플 코드는 다음과 같습니다.

function in_array_2d($value, $array) {
    $exist = false;
    array_walk_recursive($array, function($item) use (&$exist, $value) {
        if ($item == $value) {
            $exist = true;
        }
    });
    return $exist;
}

위 코드는 array_walk_recursive 함수를 사용하여 2차원 배열을 순회하고 use 키워드를 사용하여 $exist를 전달하고 $value는 기존 플래그 변수입니다. , $value 의 가치를 판단해야 합니다.

마찬가지로 사용 방법도 매우 간단합니다. 판단해야 할 값과 2차원 배열을 전달하면 됩니다. 예:

$array = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9),
);
$value = 5;
if (in_array_2d($value, $array)) {
    echo '值存在于数组中';
} else {
    echo '值不存在于数组中';
}

이 예에서 $array는 2차원 배열이고 $ value는 판단해야 할 값입니다. 실행 결과는 "배열에 값이 존재합니다"입니다.

요약

위의 두 가지 방법 모두 값이 2차원 배열에 있는지 확인하는 데 사용할 수 있습니다. 그것을 사용할 때, 당신은 당신의 필요에 따라 다양한 방법을 선택할 수 있습니다. 성능 측면에서 두 방법의 시간 복잡도는 O(n^2)입니다. 2차원 배열이 상대적으로 큰 경우에는 보다 효율적인 다른 알고리즘을 선택하는 것이 좋습니다.

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

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