【问题标题】:Foreach Loop Only Displaying One Value From ArrayForeach 循环仅显示数组中的一个值
【发布时间】:2015-01-26 22:20:32
【问题描述】:

我已尝试研究与我的问题类似的其他问题,但我没有找到任何专门解决此问题的内容。我正在使用 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
)

不过,这就是 &lt;td&gt; 单元格中显示的内容:

711, 

我希望它显示的是:

711, 2793, 988 

我确定这是一个新手错误,但我无法弄清楚。提前感谢您的帮助。

【问题讨论】:

  • 您正在用 foreach 的每个循环覆盖 $yard_name 变量
  • 为什么不用$yard_name = implode(", ", explode(",", $row[table_yard]));
  • $yard_name .= $yard 。 ", ";
  • 但它显示的是 711 还是 988?
  • @Bankzilla 啊哈!我知道这很简单。非常感谢!

标签: php arrays mysqli foreach


【解决方案1】:

未经测试,但这应该有助于解决问题。在循环之前定义$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>";
}

【讨论】:

  • 工作就像一个魅力,非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多