PHP では、データの保存と操作に配列をよく使用します。実際のアプリケーションでは、2 次元のオブジェクト配列を転置する必要がある場合があります。いわゆる転置とは、元の行を列に、列を行に変更することです。この記事では、PHP を使用して 2 次元オブジェクト配列を転置する方法を紹介します。
学生の名前と各科目の成績を含む 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 のテーブルに転置することです。最初の行は科目名、残りは各生徒の成績です。以下に示すように:
小红 | 小ギャング | ||
---|---|---|---|
88 | 95 | 英語 | |
92 | 87 | 中国語 | |
89 | 94 |
新しい 2 次元配列 $result を作成します。行数は元の配列の列数、列数は元の配列の行数です。
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]['name']; $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 次元配列を返します。特定の実装は次のステップに分かれています:
まず、元の配列の行数と列数を取得します。最初の要素が件名ではなく名前;
使用例
$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) ); $result = transpose($data); //输出转置后的数组 foreach($result as $row) { echo implode("\t", $row) . "\n"; }出力結果は次のとおりです。
小明 小红 小刚 90 88 95 85 92 87 93 89 94
概要
以上がPHP を使用して 2 次元オブジェクト配列を転置する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。