> 백엔드 개발 > PHP 문제 > PHP에서 2차원 배열의 요소 위치를 쿼리하는 방법

PHP에서 2차원 배열의 요소 위치를 쿼리하는 방법

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

PHP에서는 2차원 배열에서 특정 요소의 위치를 ​​찾아야 하는 경우가 있습니다. 과정은 매우 간단할 수 있지만 올바른 방법을 모르면 매우 까다로울 수도 있습니다. 이 기사에서는 PHP에서 2차원 배열의 요소 위치를 쿼리하는 여러 가지 방법을 소개하고 이 문제를 해결하는 데 도움을 줄 것입니다.

개별 요소의 위치 쿼리

2차원 배열에서 특정 요소의 위치를 ​​쿼리하려면 2단계 for 루프 문을 사용할 수 있습니다. 먼저 각 하위 배열을 반복한 다음 각 하위 배열에서 대상 요소를 찾습니다. 대상 요소가 발견되면 해당 위치가 반환될 수 있습니다.

다음은 for 루프 문을 사용하여 2차원 배열의 요소 위치를 쿼리하는 샘플 코드입니다.

function find_element($arr, $target) {
    for ($i = 0; $i < count($arr); $i++) {
        for ($j = 0; $j < count($arr[$i]); $j++) {
            if ($arr[$i][$j] == $target) {
                return array($i, $j);
            }
        }
    }
}
로그인 후 복사

이 함수에서 첫 번째 매개 변수 $arr는 우리가 찾고 있는 2차원 배열을 나타냅니다. 두 번째 매개변수 $target은 우리가 찾고 있는 대상 요소를 나타냅니다. 두 개의 for 루프 문을 사용하여 배열을 순회하고 대상 요소가 발견되면 해당 위치가 반환됩니다.

예를 들어 다음과 같은 2D 배열이 있다고 가정합니다.

$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
로그인 후 복사
로그인 후 복사
로그인 후 복사

다음 코드를 사용하여 숫자 5의 위치를 ​​찾을 수 있습니다.

$target = 5;
$position = find_element($arr, $target);
echo "The position of $target is ({$position[0]}, {$position[1]})";
로그인 후 복사
로그인 후 복사
로그인 후 복사

이 결과는 다음과 같습니다. 5의 위치는 (1, 1)입니다.

array_search() 함수를 사용하여 위치를 쿼리하세요

for 루프를 수동으로 작성하는 것 외에도 PHP의 array_search() 함수를 사용하여 2차원 배열에서 특정 요소의 위치를 ​​쿼리할 수도 있습니다. array_search() 함수는 1차원 배열의 요소만 찾을 수 있고, 2차원 배열에서는 직접 검색할 수 없습니다. 따라서 2차원 배열을 1차원 배열로 "평면화"한 다음 대상 요소의 위치를 ​​찾아야 합니다. 그런 다음 몇 가지 수학적 연산을 사용하여 1차원 배열의 위치를 ​​2차원 배열의 위치로 변환할 수 있습니다.

다음은 2차원 배열을 1차원 배열로 "평면화"하고 array_search() 함수를 사용하여 대상 요소를 찾는 샘플 코드입니다.

function find_element($arr, $target) {
    $flatten = array();
    foreach ($arr as $subarr) {
        $flatten = array_merge($flatten, $subarr);
    }
    $key = array_search($target, $flatten);
    if ($key !== false) {
        $col = $key % count($arr[0]);
        $row = floor($key / count($arr[0]));
        return array($row, $col);
    }
}
로그인 후 복사

이 함수에서는 먼저 두 요소를 "평면화"합니다. -차원 배열을 1차원 배열 $Flatten으로 변환합니다. 그런 다음 array_search() 함수를 사용하여 $platten에서 대상 요소의 위치를 ​​찾습니다. 대상 요소가 발견되면 몇 가지 수학적 연산을 사용하여 1차원 위치를 2차원 위치로 변환할 수 있습니다.

예를 들어 다음과 같은 2D 배열이 있다고 가정합니다.

$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
로그인 후 복사
로그인 후 복사
로그인 후 복사

다음 코드를 사용하여 숫자 5의 위치를 ​​찾을 수 있습니다.

$target = 5;
$position = find_element($arr, $target);
echo "The position of $target is ({$position[0]}, {$position[1]})";
로그인 후 복사
로그인 후 복사
로그인 후 복사

이 결과는 다음과 같습니다. 5의 위치는 (1, 1)입니다.

위치를 쿼리하려면 array_filter() 함수를 사용하세요

array_search() 함수와 유사하게 array_filter() 함수와 일부 수학적 연산을 사용하여 2차원 배열에서 특정 요소의 위치를 ​​쿼리할 수도 있습니다. array_filter() 함수를 사용하면 수동으로 배열을 반복하고 "평탄화"하는 문제를 피할 수 있습니다.

다음은 array_filter() 함수와 수학적 연산을 사용하여 2차원 배열에서 특정 요소의 위치를 ​​쿼리하는 샘플 코드입니다.

function find_element($arr, $target) {
    $result = array_filter($arr, function ($subarr) use ($target) {
        return in_array($target, $subarr);
    });
    if (!empty($result)) {
        $row = key($result);
        $col = array_search($target, $arr[$row]);
        return array($row, $col);
    }
}
로그인 후 복사

이 함수에서는 array_filter() 함수를 사용하여 요소를 필터링합니다. 2차원 배열을 사용하고 대상 요소 하위 배열을 포함하는 항목만 유지합니다. 그런 다음 key() 함수와 array_search() 함수를 사용하여 대상 요소의 위치를 ​​찾을 수 있습니다.

예를 들어 다음과 같은 2D 배열이 있다고 가정합니다.

$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
로그인 후 복사
로그인 후 복사
로그인 후 복사

다음 코드를 사용하여 숫자 5의 위치를 ​​찾을 수 있습니다.

$target = 5;
$position = find_element($arr, $target);
echo "The position of $target is ({$position[0]}, {$position[1]})";
로그인 후 복사
로그인 후 복사
로그인 후 복사

이 결과는 다음과 같습니다. 5의 위치는 (1, 1)입니다.

요약

PHP에서 2D 배열의 위치를 ​​쿼리하는 것은 까다로울 수 있지만 이 문제를 해결하는 데 사용할 수 있는 몇 가지 방법이 있습니다. for 루프를 직접 작성하든, array_search() 함수를 사용하든, array_filter() 함수를 사용하든 관계없이 1차원 위치를 2차원 위치로 변환하려면 일부 수학이 필요합니다. 이 글이 PHP에서 2D 배열의 위치를 ​​쿼리하는 방법을 더 잘 이해하는 데 도움이 되기를 바랍니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿