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 중국어 웹사이트의 기타 관련 기사를 참조하세요!