我正在尝试创建一个PHP / Oracle SQL网站,但我无法将foreach迭代放在另一个网站中。
foreach($orders as $order) {
if($order["email"] == $email){
echo "<p>".
"<strong>".
"Order: ".$order["ordernumber"].
"</strong>".".".
"</p>";
}
foreach($lines as $line){
if($order["ordernumber"] == $line["ordernumber"] &&
$line["email"] == $email){
echo "<p>".
"<strong>".
$line["name"].": ".$line["ammountordered"]." units"."
</strong>".". ".
"</p>";
}
}
}
$ orders是一个包含所有订单的查询,对于每个订单,我首先检查订单是否由客户提出,其电子邮件与他登录的电子邮件相同($ email变量)。它只打印订单号。
$ lines是第二个查询,其中包含数据库中的所有订单行,与作为外键的订单号相关联。
对于下一个foreach,我假装一旦打印了一个订单号,它就会显示属于该订单的所有订单行,if是否有过滤器,它只能在$ orders的第一次迭代中工作。
Order: 330000.
Small box 60mm: 500 units.
Medium-sized box 40mm : 1000 units.
Big box 1cm : 300 units.
Order: 330002.
这是网站上显示的内容,但是订单330002在数据库中有订单行,所以它们应该被打印出来,但我正在做的事情应该有问题,因为它似乎只适用于第一个索引$ orders迭代。
答案 0 :(得分:0)
在这里继续前行,因为黑暗中的镜头效果很好。
如果你var_dump($lines)
,你可能会看到一个生成器或一些DB对象。不是数组。
您不能在同一个生成器/数据库对象上foreach
两次。
相反,在使用之前,请考虑使用$lines = iterator_to_array($lines);
或将结果集“转换”为数组的其他方法。