首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Foreach PHP中的foreach

Foreach PHP中的foreach
EN

Stack Overflow用户
提问于 2017-05-28 17:35:42
回答 1查看 382关注 0票数 0

我正在尝试创建一个PHP/Oracle SQL网站,但我在将foreach迭代放入另一个迭代时遇到了麻烦。

代码语言:javascript
复制
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的第一次迭代中起作用。

代码语言:javascript
复制
Order: 330000.

Small box 60mm: 500 units.

Medium-sized box 40mm : 1000 units.

Big box 1cm : 300 units.

Order: 330002.

这是网站上显示的内容,但是order 330002在数据库中有订单行,所以它们应该被打印出来,但我所做的应该是有问题的,因为它似乎只适用于$orders迭代的第一个索引。

EN

回答 1

Stack Overflow用户

发布于 2017-05-28 17:42:48

这里有点冒险,因为在黑暗中拍摄效果很好。

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

你不能在同一个生成器/DB对象上foreach两次。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44225820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档