2015-01-26 48 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