繁体   English   中英

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,但这更多是为了跳过迭代,对我没有帮助。

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

我有从q1q13字段,然后从q14aq14bq14cq14dq14e然后从q15q54

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。

您可以从表中获取列并进行测试以查看它们是否以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;";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM