PHP:For循环在代码执行之前完成

PHP:For循环在代码执行之前完成,php,for-loop,indexing,echo,Php,For Loop,Indexing,Echo,我对php的for循环有问题。 循环迭代太快,在内部html代码被echo-ed之前完成 <?php for($i = 0; $i < sizeof($shoppingCart); $i++) { $sql = "SELECT * FROM products_test WHERE id = " . substr($shoppingCart[$i], 5) . ""; $q = $DBH->query($sql) or die("failed!"); $

我对php的for循环有问题。
循环迭代太快,在内部html代码被echo-ed之前完成

<?php for($i = 0; $i < sizeof($shoppingCart); $i++) { 
    $sql = "SELECT * FROM products_test WHERE id = " . substr($shoppingCart[$i], 5) . "";
    $q = $DBH->query($sql) or die("failed!");
    $q->setFetchMode(PDO::FETCH_ASSOC);
    $r = $q->fetchAll();
    echo '<tr>';
    echo '<td><img src="' . $r[$i]['image']. '" /></td>';
    echo '<td>' . $r[$i]['title'] . '</td>';
    echo '<td>' . $r[$i]['desc'] . '</td>';
    echo '<td>' . $r[$i]['price'] . '</td>';
    echo '<td><input type="number" id="qty"></td>';
    echo '<td>Remove</td>';
    echo '</tr>';
} ?>

设置临时变量不会起作用,因为它只会有相同的行为

怎么了


提前谢谢

可能是您的阵列出现空阵列。你应该加一个陷阱以防万一

您可能希望使用
empty
函数制作如下内容:

<?php 
 if (!empty($shoppingCart))
 {
  for($i = 0; $i < sizeof($shoppingCart); $i++) { 
     $sql = "SELECT * FROM products_test WHERE id = " . substr($shoppingCart[$i], 5) . "";
     $q = $DBH->query($sql) or die("failed!");
     $q->setFetchMode(PDO::FETCH_ASSOC);
     $r = $q->fetchAll();
     echo '<tr>';
     echo '<td><img src="' . $r[$i]['image']. '" /></td>';
     echo '<td>' . $r[$i]['title'] . '</td>';
     echo '<td>' . $r[$i]['desc'] . '</td>';
     echo '<td>' . $r[$i]['price'] . '</td>';
     echo '<td><input type="number" id="qty"></td>';
     echo '<td>Remove</td>';
     echo '</tr>';
  } 
 }
 else
 {
     echo '<tr><td>Your shopping cart is empty</td></tr>';
 }
?>

在我看来,您的查询总是返回一行?但是您尝试使用
$r[$i]
访问不存在的行

这可以解释为什么你在浏览器中看不到任何东西。但是尝试查看浏览器源代码,如果它显示空的html标记,那么就是这个问题


试着用
print\r($r)
显示数组的内容,看看这是什么样子。

怎么了?你期望的结果是什么?你现在得到了什么?你所说的“在回送内部html代码之前完成”是什么意思?听起来您好像遇到了错误,因此代码停止。您确定这是您的确切代码,并且没有
$i++)之后
以及
$shppingCart
的内容是什么?@Rocket no,我的意思是在for循环关闭后
在后续代码之前执行它。是的!这就是问题所在。对不起,没有提供更多信息。没问题。如果我的回答对你有帮助,你能接受吗?