PHP Loop — работа с непоследовательными итерациями

У меня есть следующий код — он производит серию запросов, которые отправляются в базу данных:

$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";
}

Проблема у меня проста, в базе данных, номер не является последовательным.

У меня есть поля, которые выходят из q1 в q13 но потом идет q14a, q14b, q14c, q14d а также q14e а затем из q15 в q54,

Я смотрел на Продолжить но это больше для пропуска итераций и не помогло мне.

Я изо всех сил пытаюсь приспособить вышеупомянутый код, чтобы справиться с этой непоследовательной ситуацией. Любые идеи и предложения приветствуются.

0

Решение

У меня есть поля, которые выходят из q1 в q13 но потом идет q14a, q14b, q14c, q14d а также q14e а затем из q15 в 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 потом.

2

Другие решения

Вы можете получить столбцы из таблицы и проверить, начинаются ли они с 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;";
}
0

По вопросам рекламы [email protected]