Foreach里面的foreach PHP

时间:2017-05-28 09:35:42

标签: php foreach oracle-sqldeveloper

我正在尝试创建一个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迭代。

1 个答案:

答案 0 :(得分:0)

在这里继续前行,因为黑暗中的镜头效果很好。

如果你var_dump($lines),你可能会看到一个生成器或一些DB对象。不是数组。

您不能在同一个生成器/数据库对象上foreach两次。

相反,在使用之前,请考虑使用$lines = iterator_to_array($lines);或将结果集“转换”为数组的其他方法。