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