2015-01-26 53 views
0

我試過研究類似於我的問題的其他問題,但我沒有找到任何具體解決此問題的任何問題。我使用mysqli選擇數據並將其顯示在表格中。 table_yard列可以有多個值,所以我分解了這些值並將它們存儲爲一個數組以循環使用,然後將結果存儲在變量$yard_name中。我後來分配此變量爲行中的我的表所示($get正在存儲SQL查詢):Foreach Loop僅顯示數組中的一個值

while ($row = mysqli_fetch_assoc($get)) { 
    $yards = explode(",", $row[table_yard]); 
foreach ($yards as $yard) { 
    $yard_name = $yard . ", "; 
} 
    $table_rows .= "<tr> 
       <td>" . mdy($row[table_date]) . "</td> 
       <td>" . $yard_name . "</td> 
       </tr>"; 

問題是,如果有該陣列在一個以上的值,則僅顯示第一項。我跑$yards調試,看是否有人甚至獲得陣列中所有的值,它是,如下所示:

Array (
[0] => 711 
[1] => 2793 
[2] => 988 
) 

雖然,這是被顯示在<td>細胞:

711, 

我希望它顯示是這樣的:

711, 2793, 988 

我相信這是一個新手的錯誤,但我無法弄清楚。預先感謝您的任何幫助。

+1

你覆蓋'$ yard_name'變量,在foreach – Bankzilla 2015-01-26 22:22:43

+0

的每一個循環爲什麼你不使用'$ yard_name =破滅(」 ,「explode(」,「,$ row [table_yard]));' – Eugen 2015-01-26 22:28:39

+0

$ yard_name。= $ yard。 「,」; – 2015-01-26 22:32:17

回答

2

未經測試,但這應該有助於解決問題。在循環之前定義$yard_name所以它不會不斷改寫

while ($row = mysqli_fetch_assoc($get)) { 
    $yards = explode(",", $row[table_yard]); 
    $yard_name = ""; 
    foreach ($yards as $yard) { 
     $yard_name .= $yard . ", "; // Add to the string instead of overwriting 
    } 
    $table_rows .= "<tr> 
     <td>" . mdy($row[table_date]) . "</td> 
     <td>" . trim($yard_name, ",") . "</td> 
    </tr>"; 
} 
+0

像魅力一樣工作,非常感謝您的幫助! – 2015-01-27 15:32:45