【问题标题】:How Can I Limit the Output from a PHP While Loop?如何限制 PHP While 循环的输出?
【发布时间】:2011-10-20 08:23:44
【问题描述】:

我有一个 while 循环正在运行,它从 MYSQL 表中返回值。它从查询中返回大约 90 个条目。我希望能够将这 90 个值分解并以 5 个为一组显示。这听起来可能令人困惑,所以让我分享一些代码示例以帮助澄清:

$con = mysql_connect("host", "username", "password") or die ("Unable to connect to server");
mysql_select_db("database") or die ("Unable to select database");
$sql = mysql_query("SELECT * FROM `table` WHERE column IS NOT NULL AND column <> ''");

在这里,我从表格中提取我需要的值...

while($row=mysql_fetch_array($sql))
{
$id=$row['id'];
$column=$row['column'];

echo $id . '<br>';
echo $column . '<br>';

}   

此时,我已运行循环并显示所有 90 个条目。如何将值提取出来并以较小的块显示它们?如果我在 while 循环之外使用循环值,它只会给我集合中的最后一个值。有没有一种简单的方法可以使用列中唯一的 $id 值来获取循环中的特定分组?

【问题讨论】:

  • 您希望它们按 5s 分组吗?还是通过他们的身份证?你两个都提到了。
  • 您是否考虑过在您的 SQL 中使用LIMIT 子句?
  • @Jason 我只是想知道如何做到这一点,所以不要太挑剔是使用 ID 还是按 5 分组。
  • @Presto:那么 Hammerite 的答案是 5 人一组的最佳选择。

标签: php mysql arrays loops while-loop


【解决方案1】:

这将在每 5 条记录后添加更多 br 和一个 hr:

$cnt = 0;
while($row=mysql_fetch_array($sql))
{

  $id=$row['id'];
  $column=$row['column'];

  echo $id . '<br>';
  echo $column . '<br>';

  if($cnt % 5 == 0) echo "<br><br><hr><br><br>";

  $cnt++;
}   

【讨论】:

  • 这里有几个很好的解决方案,但您的回答对我来说很有意义,并提供了我需要的解决方案。我还在顶部的 Dor 评论中合并了LIMIT,以获得之后的确切布局。谢谢。
【解决方案2】:

这是您可以采取的一种(不是很复杂的)方法:

$group_size = 5;
$tracking_variable = 0;
while ($row = function_to_fetch_row()) {
    if ($tracking_variable == 0) {
        // logic for the start of a grouping
    }
    // logic to display the row
    $tracking_variable = ($tracking_variable + 1) % $group_size;
    if ($tracking_variable == 0) {
        // logic for the end of a grouping
    }
}
if ($tracking_variable > 0) {
    // logic for the end of the final grouping
}

【讨论】:

    【解决方案3】:

    您希望将此数据保存在一个变量中,并在循环之外引用它。

    试试这个:

    $data = array();
    while($row=mysql_fetch_array($sql))
    {
        $data[$row['id']] = $row['column'];
    }
    

    现在你可以只显示特定的行了:

    print $data[$someRow];
    

    【讨论】:

    • 这非常有用,并为我的第二个问题提供了解决方案。感谢您的帮助。
    猜你喜欢
    • 2012-01-02
    • 2018-11-24
    • 1970-01-01
    • 2016-12-21
    • 2014-05-30
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    相关资源
    最近更新 更多