Foreach 行显示为列

Vik*_*tor 3 html php foreach codeigniter html-table

我有一个非常标准的数据库,例如:

id | name | last_name                | gender 
-----------------------------------------------
1  | John | Doe                      | Male
2  | Jane | Smith Dolores Clayborne  | Female
3  | Paul | Paulson                  | Male
Run Code Online (Sandbox Code Playgroud)

我想在表格中显示它,但数据库中的每一行都需要是 HTML 表格中的一列:

id        | 1         | 2         | 3      
---------------------------------------------
name      | John      | Jane      | Paul
---------------------------------------------
last_name | Doe       | Smith     | Paulson
          |           | Dolores   |
          |           | Clayborne |
---------------------------------------------
gender    | Male      | Female    | Male 
Run Code Online (Sandbox Code Playgroud)

如果我去:

foreach($data as $row) {
echo "<tr><td>" . $row->id . "</td></tr>";
echo "<tr><td>" . $row->name . "</td></tr>";
echo "<tr><td>" . $row->last_name . "</td></tr>";
echo "<tr><td>" . $row->gender . "</td></tr>";
}
Run Code Online (Sandbox Code Playgroud)

我在一个长列中获取所有数据。如何在每个 SQL 行之后打破列?

注意:$data是一个对象数组,其中包含具有字段值的属性(您可能可以从示例中看出这一点)。

编辑:

我找到了解决方案,请参阅我的答案,它简单而优雅。

Vik*_*tor 6

我想通了,结果证明这是一个非常简单的解决方案,只有很少的周期并在写入行和单元格之前预先填充数组。

我测试了它,就像一个魅力。;) 它可能对某人有用,所以这里是:

foreach($records as $key => $row) {
       foreach($row as $field => $value) { 
           $recNew[$field][] = $value;
       }
}
//This creates a new array composed/transposed with the field names as keys and
//the "rowed" values as sub-arrays.

echo "<table>\n";

foreach ($recNew as $key => $values) // For every field name (id, name, last_name, gender)
{
    echo "<tr>\n"; // start the row
    echo "\t<td>" . $key . "</td>\n" ; // create a table cell with the field name
        foreach ($values as $cell) // for every sub-array iterate through all values
        {
           echo "\t<td>" . $cell . "</td>\n"; // write cells next to each other
        }
    echo "</tr>\n"; // end row

}

echo "</table>";
Run Code Online (Sandbox Code Playgroud)