【发布时间】:2016-07-30 18:14:51
【问题描述】:
$prod_summary
Array ( [0] => Array ( [ord_id] => 1 [userid] => 1 [tot_qty] => 5 [tot_act_amt] => 239.28))
$prod_list
Array ( [0] => Array ( [ord_id] => 1 [BookName] => My Book update) [1] => Array ( [ord_id] => 1 [BookName] => book908) )
$prod_summary 将有订单摘要,$prod_list 将有与订单相关的产品列表。首先,它应该显示特定订单的订单摘要,然后显示该订单下订购的产品列表。示例:
Order Id: 1
Product Name : Book1
Product Name : Book2
Order Id: 2
Product Name : Book1
Product Name : Book4
Order Id: 3
Product Name : Book3
Product Name : Book4
为了实现这一点,我使用了嵌套循环,但存在问题,因为内循环会为每个外循环迭代的每个元素进行迭代。请参考以下代码:
foreach ($prod_summary as $summary) {
echo 'Order Id :'.$summary['ord_id'];
foreach ($prod_list as $prod) { // this loop will iterate for all element
if($prod['ord_id']==$summary['ord_id']){ // comparing ord_id from outer loop
echo 'Product Name '.$prod['BookName'];
}
}
}
谁能提出更好的解决方案?我们在 php 中是否有任何选项可以让我迭代 inner loop 以获取特定的 ord_id(来自外部循环)以节省一些资源?
【问题讨论】:
-
对不起!但问题不清楚!给定
$prod_summary,您想获得$prod_list中的所有产品吗? -
@IsmailRBOUH 内循环每次都会循环所有值,我想避免这种情况,而是如果我可以只为特定值迭代内循环,这将来自外循环。或者,如果我可以将两个数组合并为一个并且可以获得相同的输出(如我所示),也可以工作。
-
@jWeaver,
BookName值在“prod_list”中是否应该是唯一的? -
@RomanPerekhrest No.
BookName是与ord_id关联的产品名称。它可以是重复的,但不是特定的ord_id。对于每个ord_id,BookName将是unique或者换句话说,ord_id=1不能有重复的BookName条目。 -
这个问题不是很清楚。你到底想达到什么目标?
标签: php for-loop associative-array