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";
}
我的问题很简单,在数据库中,数字不是连续的。
我有从 q1
到 q13
的字段,然后是 q14a
、q14b
、q14c
、q14d
和 q14e
然后从 q15
到 q54
.
我看过 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。
我有以下代码 - 它生成一系列发送到数据库的查询:
$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
.
我看过 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
toq13
but then goesq14a
,q14b
,q14c
,q14d
andq14e
and then fromq15
toq54
.
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。