PHP는 강력한 프로그래밍 언어로서 풍부한 데이터 구조를 가지고 있으며, 그 중 2차원 배열이 일반적으로 사용되는 데이터 구조입니다. 일상적인 개발 과정에서 핵심 데이터를 찾기 위해 2차원 배열을 탐색해야 하는 경우가 많습니다. 그러나 각 순회에 중첩 루프를 사용하면 시간 복잡도가 매우 높아집니다. 이번 글에서는 한 번의 루프로 2차원 배열의 키 값을 찾는 방법을 소개하겠습니다.
2차원 배열은 여러 배열을 포함하고 요소를 행과 열 형태로 구성하는 특별한 유형의 배열입니다. 2차원 배열은 행 인덱스와 열 인덱스로 각 요소에 액세스할 수 있는 여러 개의 1차원 배열로 구성된 행렬로 생각할 수 있습니다. PHP에서 2차원 배열은 다음과 같은 방법으로 정의할 수 있습니다.
$arr = array( array(1, 2, 3), array(4, 5, 6), array(7, 8, 9) );
위 코드는 $arr 2차원 배열을 정의합니다. 여기에는 각각 3개의 요소가 있는 3개의 1차원 배열이 포함되어 있습니다.
기존의 2차원 배열 순회 방법에서는 일반적으로 두 개의 중첩 루프를 사용해야 합니다. 하나는 행 순회용이고 다른 하나는 열 순회용입니다. 예:
foreach ($arr as $key1 => $value1) { foreach ($value1 as $key2 => $value2) { if ($value2 == $target) { echo "关键值所在的行为:" . $key1 . "<br>"; echo "关键值所在的列为:" . $key2 . "<br>"; } } }
위 코드에서는 foreach 루프를 사용하여 $arr 배열의 각 요소를 반복합니다. 첫 번째 루프는 행을 반복하고 두 번째 루프는 열을 반복합니다. 대상 요소 $target을 찾으면 해당 요소가 위치한 행과 열을 출력합니다.
그러나 이 방법의 시간 복잡도는 $O(n^2)$입니다. 즉, 배열 크기가 증가할수록 루프 수가 기하급수적으로 증가합니다.
이제 단 하나의 루프에서 2차원 배열의 키 값을 찾을 수 있는 보다 효율적인 방법을 소개합니다. 이 방법은 PHP에서 제공하는 일부 배열 함수를 기반으로 하며 $O(n)$의 시간 복잡도라는 장점이 있습니다.
먼저 PHP의 array_map 함수를 사용하여 2차원 배열을 1차원 배열로 변환한 다음 array_search 함수를 사용하여 1차원 배열에서 대상 값을 찾아야 합니다. 코드는 다음과 같습니다.
// 将二维数组转成一维数组 $array = array_reduce($arr, 'array_merge', array()); // 在一维数组中查找目标值 $key = array_search($target, $array); // 计算目标值所在的行和列 $row = floor($key / count($arr[0])); $col = $key % count($arr[0]); echo "关键值所在的行为:" . $row . "<br>"; echo "关键值所在的列为:" . $col . "<br>";
위 코드에서는 array_reduce 함수를 사용하여 2차원 배열을 1차원 배열로 변환합니다. array_search 함수는 1차원 배열에서 대상 값을 찾아 행을 계산합니다. 2차원 배열의 목표 값의 합입니다.
이 방법의 시간 복잡도는 $O(n)$입니다. 기존 방법에 비해 성능이 크게 향상되었습니다.
이 글에서는 한 번의 루프로 2차원 배열의 키 값을 찾을 수 있는 효율적인 방법을 소개합니다. PHP에서 제공하는 일부 배열 함수를 사용하여 시간 복잡도를 $O(n^2)$에서 $O(n)$로 줄여 프로그램 성능을 크게 향상시켰습니다. 이 글이 PHP에서 2차원 배열을 순회하고 검색하는 데 도움이 되기를 바랍니다.
위 내용은 PHP는 하나의 루프에서 2차원 배열의 키를 찾습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!