2017-01-09 70 views
0

我試圖填充數組到一個HTML表,但我不斷收到 注意:未定義的偏移如何填充數組數據到一個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()的結果。

var dump

+1

你的$ j不是一個數字鍵,它的:id,customer_id等 – nogad

+1

我認爲使用'foreach'循環反而會簡化一些事情。 –

回答

0

硬編碼數組的長度是一個很大的不,不

foreach($this->exec[$i]as $j) 
    { 
     echo '<td>'.$this->exec[$i][$j].'</td>'; 
    } 

但是如果你必須harcode計數,確保你得到它的權利。根據你的標記,它看起來像你;預計6個元素,而不是5個。

2

如果使用foreach循環,則不需要擔心不正確的索引。

在我看來,for循環通常更適合做特定的次數,如果您只是遍歷數組中的每一項,foreach通常更直接。

foreach ($this->exec as $invoice) 
{ 
    echo '<tr>'; 
    foreach ($invoice as $column) 
    { 
     echo '<td>'.$column.'</td>'; 
    } 
    echo '</tr>'; 
} 
相關問題