我的查询选择了我的表中的所有列
$spool = $wpdb->get_results('SELECT * FROM `tablename`');
然后我在表格中显示结果。我需要显示所有列。这就是我这样做的方式。
echo "<table>";
if ( !empty( $spool ) ) {
echo "<tr><th> header </th></tr>";
foreach ( $spool as $a ) {
echo "<tr><th>" . $a->columnname1 . "</th><th>" .$a->columnnameN . "</th></tr>";
}
}
echo "</table>";
既然我有大约40个专栏,我想问一下是否有一种更聪明,更乏味的显示方式。
答案 0 :(得分:1)
可能你需要嵌套循环,你得到的结果可能是这样的
array(
0:{column1:test,column2:test . . . },
1:{column1:test,column2:test . . . }
)
所以你可以尝试这种方式
echo "<table>";
if ( !empty( $spool ) ) {
echo "<tr><th> header </th></tr>";
foreach ( $spool as $key => $value ) {
echo '<tr>';
foreach ( $value as $a ) {
echo "<th>" . $a. "</th>";
}
echo '</tr>';
}
}
echo "</table>";
答案 1 :(得分:1)
由于你有对象,你可以将它们转换为数组并使用implode。 (但属性顺序可能与您想要的不同。)
<?php
class A
{
public $foo = 'bing';
public $bar = 'bang';
public $baz = 'bong';
}
$spool = [new A, new A];
echo '<table>';
foreach($spool as $a) {
echo '<tr>';
echo '<td>' . implode('</td><td>', (array) $a) . '</td>';
echo '</tr>';
}
echo '</table>';
输出:
<table><tr><td>bing</td><td>bang</td><td>bong</td></tr><tr><td>bing</td><td>bang</td><td>bong</td></tr></table>