ホームページ >バックエンド開発 >PHPの問題 >PHP を使用して 2 次元オブジェクト配列を転置する方法

PHP を使用して 2 次元オブジェクト配列を転置する方法

PHPz
PHPzオリジナル
2023-04-23 09:10:36737ブラウズ

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 中国語
小明 90 85 93
小红 88 92 89
小公 95 87 94

私たちの目標は、このテーブルを 4x3 のテーブルに転置することです。最初の行は科目名、残りは各生徒の成績です。以下に示すように:

小明小红小ギャング#数学908895英語859287中国語938994転置方法

  1. 2 次元配列を転置するには、次の手順に従います。

新しい 2 次元配列 $result を作成します。行数は元の配列の列数、列数は元の配列の行数です。

    元の配列をトラバースしてそれぞれを追加します要素の行の添字と列の添字が交換され、$result;
  • Return $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 次元配列を返します。特定の実装は次のステップに分かれています:

まず、元の配列の行数と列数を取得します。最初の要素が件名ではなく名前;

    次に、新しい 2 次元配列 $result を作成します。行数は元の配列の列数、列数は元の配列の行数です。 array;
  • その後、二重ループを経て、元の配列は各要素の行添字と列添字が交換され、$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

    概要

    1. この記事では、PHP を使用して 2 次元オブジェクト配列の転置を実装する方法を紹介します。転置は、行と列の間でデータを簡単に交換して、一部のニーズをより適切に満たすことができる非常に一般的な操作です。 PHP は多くの配列処理関数を提供しますが、転置には対応する関数がありませんが、単純なループを使用してそれを実現できます。

    以上がPHP を使用して 2 次元オブジェクト配列を転置する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。