>백엔드 개발 >PHP 문제 >PHP를 사용하여 2차원 객체 배열을 전치하는 방법

PHP를 사용하여 2차원 객체 배열을 전치하는 방법

PHPz
PHPz원래의
2023-04-23 09:10:36738검색

PHP에서는 데이터를 저장하고 조작하기 위해 배열을 자주 사용합니다. 실제 응용에서는 때때로 2차원 객체 배열을 전치해야 할 때가 있습니다. 소위 전치란 원래 행을 열로, 열을 행으로 변경하는 것입니다. 이 기사에서는 PHP를 사용하여 2차원 객체 배열을 전치하는 방법을 소개합니다.

  1. 원본 데이터

학생 이름과 각 과목의 성적을 포함하는 2차원 객체 배열 $data가 있다고 가정합니다. 예:

$data = array(
  array('name'=>'小明', 'Math'=>90, 'English'=>85, 'Chinese'=>93),
  array('name'=>'小红', 'Math'=>88, 'English'=>92, 'Chinese'=>89),
  array('name'=>'小刚', 'Math'=>95, 'English'=>87, 'Chinese'=>94)
);

이 배열은 다음과 같이 3x4 테이블로 표현될 수 있습니다. 아래 표시:

Name Math English Chinese
Xiao Ming 90 85 93
작은红 88 92 89
Xiaogang 95 87 94

우리의 목표는 이 표를 4x3 표로 바꾸는 것입니다. 여기서 첫 번째 줄은 과목 이름이고 나머지는 각 성적입니다. 학생 . 아래와 같습니다:


Xiao Ming Xiao Hong Xiao Gang
Math 90 88 95
영어 85 92 87
중국어 93 89 94
  1. 전치 방법

2차원 배열을 전치하려면 다음 단계를 따르세요. 새로 만들기 두 개 -차원 배열 $result, 행 수는 원래 배열의 열 수이고 열 수는 원래 배열의 행 수입니다.

    원래 배열을 탐색하고 행 첨자와 열 첨자를 교환합니다. 각 요소를 $result에 저장합니다.
  • 의 해당 위치는 $result를 반환합니다.
  • PHP에서는 다음 코드를 사용하여 2차원 객체 배열의 전치를 구현할 수 있습니다.
function transpose($data) {
    //获取原数组的行数和列数
    $rows = count($data);
    $cols = count($data[0]) - 1;

    //创建一个新的二维数组
    $result = array();
    for($i=0; $i<=$cols; $i++) {
        $result[$i] = array();
    }

    //遍历原数组,将每个元素的行下标和列下标互换
    for($row=0; $row<$rows; $row++) {
        for($col=1; $col<=$cols; $col++) {
            $result[$col-1][$row] = $data[$row][&#39;name&#39;];
            $result[$col-1][$row+1] = $data[$row]["Math"];
            $result[$col-1][$row+2] = $data[$row]["English"];
            $result[$col-1][$row+3] = $data[$row]["Chinese"];
        }
    }

    return $result;
}
이 함수는 2차원 객체 배열 $data를 매개변수로 받아들이고 전치된 2차원 배열을 반환합니다. 구체적인 구현은 다음 단계로 나뉩니다.

먼저 원래 배열의 행과 열 수를 가져옵니다. 첫 번째 요소는 제목이 아니라 이름이기 때문에 실제로 열 수에서 1을 뺀 값입니다.

    그런 다음 새로운 두 개를 만듭니다. 차원 배열 $result의 행 수는 원래 배열의 열 수이고 열 수는 원본 배열의 행 수입니다.
  • 그런 다음 이중 루프를 통해 원본 배열의 각 요소의 행 첨자와 열 첨자가 바뀌어 $result의 해당 위치에 저장됩니다.
  • 마지막으로 $result를 반환합니다.
  • 이 함수는 특정 원본 배열 구조에 대해 구현된다는 점에 유의하세요. 원래 배열 구조가 다른 경우 함수를 적절하게 수정해야 할 수도 있습니다.

사용 예

  1. 사용 예는 다음과 같습니다.
  2. $data = array(
        array(&#39;name&#39;=>'小明', 'Math'=>90, 'English'=>85, 'Chinese'=>93),
        array('name'=>'小红', 'Math'=>88, 'English'=>92, 'Chinese'=>89),
        array('name'=>'小刚', 'Math'=>95, 'English'=>87, 'Chinese'=>94)
    );
    
    $result = transpose($data);
    
    //输出转置后的数组
    foreach($result as $row) {
        echo implode("\t", $row) . "\n";
    }
    출력 결과는 다음과 같습니다.

    小明    小红    小刚
    90      88      95
    85      92      87
    93      89      94

    Summary

    1. 이 글에서는 PHP를 사용하여 2차원 객체의 전치를 구현하는 방법을 소개합니다. 정렬. 전치(Transpose)는 일부 요구 사항을 더 잘 충족하기 위해 행과 열 간에 데이터를 쉽게 교환할 수 있는 매우 일반적인 작업입니다. PHP는 많은 배열 처리 기능을 제공하지만 전치에서는 해당 기능을 제공하지 않지만 간단한 루프를 사용하여 이를 달성할 수 있습니다.

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

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