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

可以说例如我有一个结果集从一个MySQL查询产生的值:3,5,10,11等等......PHP跳过循环基于查询结果集的迭代

I想要在PHP中循环遍历一个for循环,但排除任何可能与我的MySQL查询结果中的任何数字相等的迭代。

目前的情况是我目前有:

for($i = 1; $i <= $num_rows; $i++) 

{

if($i == 3 or $i == 5)

{

continue;

}

//Rest of loop...

大家都会明白硬编码这些值是非常耗时且效率不高。如果任何人可以帮助它将不胜感激。

回答:

如果你能收集自动那些你正在硬编码值,你可以使用in_array($search, $array[, $strict])

像这样:

$bypass = array(3, 5); 

for($i = 1; $i <= $num_rows; $i++)

{

if(in_array($i, $bypass))

{

continue;

}

// rest of the loop

}

PS:我更喜欢更在“不要恐慌”的答案,不使用过多的循环。 (in_array将遍历数组以查找您的值)。看到他的回答:https://stackoverflow.com/a/38880057/3799829

回答:

如果查询结果作为数组返回,您可以使用 if(in_array($i, $results))做$我的支票对结果

回答:

当您获取查询结果时将您的值添加到数组中。我用PDO这里的例子,但你应该能够使其适应哪个数据库扩展你使用:

while ($row = $stmt->fetchObject()) { 

$exclude[$row->value] = true;

// whatever else you're doing with the query results

}

如果你的东西在阵列中使用的值作为键你想跳过,检查它们在您的for循环中应该比使用in_array更高效。

for($i = 1; $i <= $num_rows; $i++) { 

if (isset($exclude[$i])) continue;

// rest of loop

以上是 PHP跳过循环基于查询结果集的迭代 的全部内容, 来源链接: utcz.com/qa/267209.html

回到顶部