>백엔드 개발 >PHP 튜토리얼 >PHP에서 다차원 배열을 효율적으로 전치하려면 어떻게 해야 합니까?

PHP에서 다차원 배열을 효율적으로 전치하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-26 12:05:14564검색

How Can I Efficiently Transpose Multidimensional Arrays in PHP?

PHP에서 다차원 배열 전치: 뒤집기 및 일반화

다차원 배열 전치란 행과 열을 뒤집어 배열을 효과적으로 회전시키는 작업입니다. 90도. 이러한 일반적인 프로그래밍 작업을 해결하기 위해 2차원 배열과 고차원 배열 모두에 대해 이를 수행하는 PHP 함수를 살펴보겠습니다.

2차원 배열 전치

For 질문에 제공된 예와 같은 2차원 배열을 전치하는 것은 간단한 과정입니다. transpose라는 이름의 다음 함수가 이를 달성합니다.

function transpose($array) {
    array_unshift($array, null);
    return call_user_func_array('array_map', $array);
}

이 함수는 null 요소를 배열의 첫 번째 인덱스로 추가한 다음 array_map을 사용하여 각 행을 반복하고 해당 행의 새 배열을 생성하는 방식으로 작동합니다. 각 열입니다.

예를 들어, 질문에 제공된 $foo 배열을 바꾸려면:

$bar = transpose($foo);
var_dump($bar[2]);

이렇게 하면 다음이 출력됩니다. 원하는 결과:

array(3) {
  ["a"]=>
  string(2) "a2"
  ["b"]=>
  string(2) "b2"
  ["c"]=>
  string(2) "c2"
}

고차원 배열로 일반화

재귀를 사용하여 모든 차원의 배열을 처리하도록 전치 함수를 일반화할 수 있습니다. 방법은 다음과 같습니다.

function multi_transpose($array) {
    if (!is_array($array)) {
        return array($array);
    }

    $transposed = array();
    foreach ($array as $key => $value) {
        $transposed[] = multi_transpose($value);
    }

    return call_user_func_array('array_map', $transposed);
}

이 함수는 배열을 입력으로 사용하고 배열 값에 대해 반복적으로 자신을 호출합니다. 기본 사례는 값이 더 이상 배열이 아닌 경우이며, 이 경우 값을 포함하는 단일 요소 배열을 반환합니다. 배열의 경우 각 값을 재귀적으로 전치하고 array_map을 사용하여 이를 최종 전치 배열로 결합합니다.

multi_transpose 함수를 사용하는 것은 2차원 전치 함수와 유사합니다.

$multi_dimensional_array = ...;
$transposed = multi_transpose($multi_dimensional_array);

이것은 함수는 임의로 중첩된 배열을 처리할 수 있으며 크기를 90도 뒤집어 배열을 전치합니다.

위 내용은 PHP에서 다차원 배열을 효율적으로 전치하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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