foreach里面的foreach迭代双倍时间

时间:2017-04-09 04:33:39

标签: php mysql foreach

我有一个代码,其中foreach在另一个foreach中。

$order_id = '1,1,8';
$order_no_first= 'F,SH,C';

$order_id1 = explode(",", $order_id);
$order_no_first1 = explode(',', $order_no_first);

foreach($order_id1 as $ord_id){
    foreach($order_no_first1 as $ord_no_first){
        if($ord_id != '') {
            $this->receipt->chageBagStatus($ord_id, $ord_no_first);
            $add = $this->receipt->addJobOrderNew($ord_id, $ord_no_first, $bag_no);
        }
    }
}

现在上面的代码迭代了3次,在mysql中产生了9行。

//Current Output

order_id    orderr_no_first
--------    ---------------
   8              C
   8              SH
   8              F
   1              C
   1              SH
   1              F
   1              C
   1              SH
   1              F

以上输出错误。我想要输出如下,

//Required Output

order_id    orderr_no_first
--------    ---------------
   8              C
   1              SH
   1              F

我知道这是因为我使用的是嵌套的foreach。但我不知道如何解决这个问题。有什么解决方案吗?三江源。

2 个答案:

答案 0 :(得分:2)

只使用这样一个foreach,

foreach($order_id1 as $key => $ord_id){
        if($ord_id != '') {
            $this->receipt->chageBagStatus($ord_id, $order_no_first1[$key]);
            $add = $this->receipt->addJobOrderNew($ord_id, $order_no_first1[$key], $bag_no);
        }
}

答案 1 :(得分:2)

我希望这对你有用

$order_id = '1,1,8';
$order_no_first= 'F,SH,C';

$order_id1 = explode(",", $order_id);
$order_no_first1 = explode(',', $order_no_first);

rsort($order_id1);
asort($order_no_first1);

$i = 0;
foreach($order_id1 as $ord_id){
    echo $ord_id." &nbsp;&nbsp;".$order_no_first1[$i]."<br/>";
    $i++;
}

`