PHP循环 - 处理非连续迭代

时间:2015-01-19 23:09:49

标签: php loops iteration nonsequential

我有以下代码 - 它会生成一系列发送到数据库的查询:

$a = 'q';
$aa = 1;
$r = "$a$aa";
$q = 54;

while($aa <= $q){
$query  .= "SELECT COUNT(". $r .") as Responses FROM tresults;";
$aa = $aa + 1;
$r = "$a$aa";
}

我遇到的问题很简单,在数据库中,数字不是连续的。

我的字段从q1q13,但随后转到q14aq14bq14cq14d和{{1然后从q14eq15

我看过继续,但更多的是跳过迭代并且没有帮助我。

我正在努力调整上面的代码来处理这种非顺序情况。任何想法和建议都欢迎。

2 个答案:

答案 0 :(得分:2)

  

我的字段从q1q13,但随后转到q14aq14bq14cq14d和{{1然后从q14eq15

q54

如果您不需要按编号顺序执行语句,那么如果计数器为14,您也可以在第一个循环中跳过一个语句,然后再进行第二个循环(不嵌套到第一个循环中),那之后是q14s。

答案 1 :(得分:0)

您可以从表中获取列并进行测试,看看它们是以q开头(还是使用preg_match):

$result = query("DESCRIBE tresults");

while($row = fetch($result)) {
    if(strpos($row['Field'], 'q') === 0) {
        $query  .= "SELECT COUNT(". $r .") as Responses FROM tresults;";
    }
}

或构建columns数组并使用它:

$columns = array('q1', 'q2', 'q54'); //etc...

foreach($columns as $r) {
    $query  .= "SELECT COUNT(". $r .") as Responses FROM tresults;";
}