基于查询结果集的PHP跳过循环迭代

基于查询结果集的PHP跳过循环迭代,php,mysql,for-loop,continue,Php,Mysql,For Loop,Continue,比如说,我有一个MySQL查询的结果集,它生成了3、5、10、11等值 我想在PHP中迭代一个for循环,但不包括任何等于MySQL查询结果中任何数字的迭代 目前,我有: for($i = 1; $i <= $num_rows; $i++) { if($i == 3 or $i == 5) { continue; } //Rest of loop... 正如大家所理解的,硬编码这些值非常耗时,效率也不高。如果有人能帮上忙,我们将不胜感激。如果您的查询结果以数组形式返回,您可

比如说,我有一个MySQL查询的结果集,它生成了3、5、10、11等值

我想在PHP中迭代一个for循环,但不包括任何等于MySQL查询结果中任何数字的迭代

目前,我有:

for($i = 1; $i <= $num_rows; $i++)
{
 if($i == 3 or $i == 5)
 {
   continue;
 }
 //Rest of loop...

正如大家所理解的,硬编码这些值非常耗时,效率也不高。如果有人能帮上忙,我们将不胜感激。

如果您的查询结果以数组形式返回,您可以使用它
如果使用数组$i,$results对结果执行$i检查

如果可以自动收集当前硬编码的值,则可以使用

像这样:

$bypass = array(3, 5);

for($i = 1; $i <= $num_rows; $i++)
{
    if( in_array($i, $bypass) )
    {
        continue;
    }

    // rest of the loop
}

PS:我更喜欢不要惊慌的答案,它不会使用太多的循环。in_数组将在数组中循环查找您的值。查看他的答案:

在获取查询结果时将值添加到数组中。例如,我在这里使用了PDO,但您应该能够使其适应所使用的任何数据库扩展:

while ($row = $stmt->fetchObject()) {
    $exclude[$row->value] = true;
    // whatever else you're doing with the query results
}
如果将这些值用作要跳过的数组中的键,那么在for循环中检查它们应该比在_数组中使用更有效


您是否已在尝试执行此操作时获取了查询的所有结果?是的,我已在此时获取了结果。我已经考虑过将它们放入一个数组中,但是我不确定如何将其集成到循环中。这里最好的答案是,没有无用的loops@Bob0t我很感激你的赞美和推荐。这正是我所需要的。非常感谢。
for($i = 1; $i <= $num_rows; $i++) {
    if (isset($exclude[$i])) continue;
    // rest of loop