我正在尝试将数组填充到HTML表中,但我一直在努力 注意:未定义的偏移量
我做错了什么?
<?php
class Invoices{
public $database;
public $exec;
public function __construct(){
$this->database = new Dbase();
}
public function show(){
$query="SELECT * FROM invoices;";
$this->exec=$this->database->fetch($this->database->run($query));
echo '<table class="table table-striped table-bordered"><thead>
<tr>
<th>ID</th>
<th>Customer ID</th>
<th>Products</th>
<th>Total</th>
<th>Status</th>
<th></th>
</tr>
</thead>';
for ($i=0; $i<count($this->exec, 0); $i++){
echo '<tr>';
for ($j=0; $j<5; $j++){
echo '<td>'.$this->exec[$i][$j].'</td>';
}
echo '</tr>';
}
echo '</table>';
}
}
?>
以下是$ exec数组中var_dump()
的结果。
答案 0 :(得分:2)
如果使用foreach
循环,则无需担心索引不正确。
在我看来,for
循环通常更适合做特定次数的事情,如果你只是迭代数组中的每个项目,foreach
通常更直接。
foreach ($this->exec as $invoice)
{
echo '<tr>';
foreach ($invoice as $column)
{
echo '<td>'.$column.'</td>';
}
echo '</tr>';
}
答案 1 :(得分:0)
硬编码数组长度很大,不是没有
foreach($this->exec[$i]as $j)
{
echo '<td>'.$this->exec[$i][$j].'</td>';
}
但如果你必须对计数进行编码,请确保你做对了。根据你的标记,它看起来像你;期待6个元素,而不是5个。