Foreach循环仅显示数组中的一个值

时间:2015-01-26 22:20:32

标签: php arrays mysqli foreach

我已经尝试过研究类似于我的问题的其他问题,但我没有找到任何具体解决这个问题的问题。我正在使用mysqli选择数据并将其显示在表格中。列table_yard可以有多个值,因此我将这些值展开并将它们存储为要循环的数组,然后将结果存储在变量$yard_name中。我稍后将此变量分配给表中的一行,如此($get存储sql查询):

 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 个答案:

答案 0 :(得分: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>";
}