在 FOR 循环中迭代 FOREACH 数组
Iterating FOREACH arrays in a FOR loop
过去一周我一直在努力学习 PHP,但遇到了一个特定的问题。请原谅我的标题措辞不佳,因为我还没有掌握行话。
这是我的代码:
$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);
for ($x = 1; $x <=3; $x++){
echo '<br /> This is an iteration ',$x;
$sth->execute();
foreach ($sth->fetchall() as $row)
{
$results = $row[$tablefields];
echo $results, '<br />'
;
}
}
我希望代码输出如下:
This is iteration No. 1
Apple
Orange
Banana
Kiwi
This is iteration No. 2
Apple
Orange
Banana
Kiwi
This is iteration No. 3
Apple
Orange
Banana
Kiwi
现在,上面的代码可以很好地完成工作,但是当我想增加迭代次数 $x<=20,并将水果选项增加到 20 个项目时,页面呈现速度明显变慢。我想知道是不是因为代码查询了 MySQL 数据库 20 次?有没有更好的方法来构建代码以提高效率?
$x=1;
foreach ($sth->fetchall() as $row){
echo '<br /> This is an iteration ',$x;
$results = $row[$tablefields];
echo $results;
$x++;
}
您可以使用上面的代码,而不是一起使用 for 循环和 foreach。
因为您 MySQL 查询了 20 次。您可以缓存结果,然后使用缓存进行循环。例如:
$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);
$sth->execute();
$result = "";
foreach ($sth->fetchall() as $row) {
$result .= $row[$tablefields] . "<br>";
}
for ($x = 1; $x <=3; $x++){
echo '<br /> This is an iteration ' . $x;
echo $result;
}
事情是这样的..
我不知道你为什么要执行三次查询或者每次循环都是运行。但这是对您的代码的一点改进。看一看。
$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);
$sth->execute();
$data = "";
foreach ($sth->fetchall() as $row) {
$data .= $row[$tablefields] . "<br>";
}
for ($x = 1; $x <=3; $x++){
echo '<br /> This is an iteration ' . $x;
echo $data;
}
过去一周我一直在努力学习 PHP,但遇到了一个特定的问题。请原谅我的标题措辞不佳,因为我还没有掌握行话。
这是我的代码:
$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);
for ($x = 1; $x <=3; $x++){
echo '<br /> This is an iteration ',$x;
$sth->execute();
foreach ($sth->fetchall() as $row)
{
$results = $row[$tablefields];
echo $results, '<br />'
;
}
}
我希望代码输出如下:
This is iteration No. 1
Apple
Orange
Banana
Kiwi
This is iteration No. 2
Apple
Orange
Banana
Kiwi
This is iteration No. 3
Apple
Orange
Banana
Kiwi
现在,上面的代码可以很好地完成工作,但是当我想增加迭代次数 $x<=20,并将水果选项增加到 20 个项目时,页面呈现速度明显变慢。我想知道是不是因为代码查询了 MySQL 数据库 20 次?有没有更好的方法来构建代码以提高效率?
$x=1;
foreach ($sth->fetchall() as $row){
echo '<br /> This is an iteration ',$x;
$results = $row[$tablefields];
echo $results;
$x++;
}
您可以使用上面的代码,而不是一起使用 for 循环和 foreach。
因为您 MySQL 查询了 20 次。您可以缓存结果,然后使用缓存进行循环。例如:
$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);
$sth->execute();
$result = "";
foreach ($sth->fetchall() as $row) {
$result .= $row[$tablefields] . "<br>";
}
for ($x = 1; $x <=3; $x++){
echo '<br /> This is an iteration ' . $x;
echo $result;
}
事情是这样的..
我不知道你为什么要执行三次查询或者每次循环都是运行。但这是对您的代码的一点改进。看一看。
$query = "SELECT $tablefields FROM $tablename";
$sth = $dbconn->prepare($query);
$sth->execute();
$data = "";
foreach ($sth->fetchall() as $row) {
$data .= $row[$tablefields] . "<br>";
}
for ($x = 1; $x <=3; $x++){
echo '<br /> This is an iteration ' . $x;
echo $data;
}