PHP 循环 - 处理非顺序迭代

PHP Loop - dealing with non-sequential iterations

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

$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 的字段,然后是 q14aq14bq14cq14dq14e 然后从 q15q54.

我看过 continue,但那更多是为了跳过迭代,对我没有帮助。

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

您可以从 table 中获取列并测试它们是否以 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 = array('q1', 'q2', 'q54'); //etc...

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

I have fields that go from q1 to q13 but then goes q14a, q14b, q14c, q14d and q14e and then from q15 to q54.

for($i=1; $i<=54; ++$i) {
  if($i != 14) {
    echo 'q' . $i . "<br>";
  }
  else {
    for($j='a'; $j<='e'; ++$j) {
      echo 'q14' . $j . "<br>";
    }
  }
}

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