Home >Backend Development >PHP Problem >How to use PHP to transpose a two-dimensional object array
In PHP, we often use arrays to store and manipulate data. In practical applications, we sometimes need to transpose a two-dimensional object array. The so-called transposition is to change the original rows into columns and the columns into rows. This article will introduce how to use PHP to transpose a two-dimensional object array.
Suppose we have a two-dimensional object array $data, which contains the name of the student and the grades of each subject, for example:
$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) );
This array can be represented as a 3x4 table, as shown below:
Name | Math | English | Chinese |
---|---|---|---|
小明 | 90 | 85 | 93 |
小红 | 88 | 92 | 89 |
小公 | 95 | 87 | 94 |
Our goal is to transpose this table into a 4x3 table, where The first line is the name of the subject, and the rest are the grades of each student. As shown below:
小红 | 小 Gang | ||
---|---|---|---|
90 | 88 | 95 | |
85 | 92 | 87 | |
93 | 89 | 94 |
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; }This function accepts a two-dimensional object array $data as a parameter and returns a transpose The resulting two-dimensional array. The specific implementation is divided into the following steps:
$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"; }The output result is as follows:
小明 小红 小刚 90 88 95 85 92 87 93 89 94
The above is the detailed content of How to use PHP to transpose a two-dimensional object array. For more information, please follow other related articles on the PHP Chinese website!