>  기사  >  백엔드 개발  >  PHP는 하나의 루프에서 2차원 배열의 키를 찾습니다.

PHP는 하나의 루프에서 2차원 배열의 키를 찾습니다.

WBOY
WBOY원래의
2023-05-07 14:53:08571검색

PHP는 강력한 프로그래밍 언어로서 풍부한 데이터 구조를 가지고 있으며, 그 중 2차원 배열이 일반적으로 사용되는 데이터 구조입니다. 일상적인 개발 과정에서 핵심 데이터를 찾기 위해 2차원 배열을 탐색해야 하는 경우가 많습니다. 그러나 각 순회에 중첩 루프를 사용하면 시간 복잡도가 매우 높아집니다. 이번 글에서는 한 번의 루프로 2차원 배열의 키 값을 찾는 방법을 소개하겠습니다.

  1. 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차원 배열이 포함되어 있습니다.

  1. 기존의 2차원 배열 순회 방법

기존의 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)$입니다. 즉, 배열 크기가 증가할수록 루프 수가 기하급수적으로 증가합니다.

  1. 하나의 루프에서 키 값을 찾는 방법

이제 단 하나의 루프에서 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)$입니다. 기존 방법에 비해 성능이 크게 향상되었습니다.

  1. 요약

이 글에서는 한 번의 루프로 2차원 배열의 키 값을 찾을 수 있는 효율적인 방법을 소개합니다. PHP에서 제공하는 일부 배열 함수를 사용하여 시간 복잡도를 $O(n^2)$에서 $O(n)$로 줄여 프로그램 성능을 크게 향상시켰습니다. 이 글이 PHP에서 2차원 배열을 순회하고 검색하는 데 도움이 되기를 바랍니다.

위 내용은 PHP는 하나의 루프에서 2차원 배열의 키를 찾습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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