让我们说例如我有一个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...
正如您将会欣赏硬编码这些值非常耗时且效率不高。如果有人能提供帮助,我们将不胜感激。
答案 0 :(得分:3)
如果您的查询结果作为数组返回,则可以使用
if(in_array($i, $results))
根据结果检查$ i
答案 1 :(得分:3)
如果您可以自动收集当前正在编码的值,则可以使用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:我更喜欢&#34; Dont Panic&#34;回答,它没有使用太多的循环。 (in_array将循环遍历数组以查找您的值)。见他的回答:https://stackoverflow.com/a/38880057/3799829
答案 2 :(得分:2)
在获取查询结果时,将值添加到数组中。例如,我在这里使用了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