PHP in_array只占用最后一个值?

时间:2017-12-03 19:05:53

标签: php

我目前正在处理订单流程。我不是PHP编码的明星,但现在尝试这个; - )

if(isset($_SESSION["cart_item"]) && count($_SESSION["cart_item"])>0){
    if($configdetail->servicefeeapply==2){
        foreach ($_SESSION["cart_item"] as $key => $value) {
            $totalprice +=$value['itemprice'];
        }
        if(in_array('postal',$value['shipping'])){
            $shippingprice=str_replace(",",'.',$configdetail->servicefee);
        }
    }
    if($configdetail->servicefeeapply==1){
        foreach ($_SESSION["cart_item"] as $key => $value){
            if(in_array('postal',$value['shipping'])){
                $shippingprice +=str_replace(",",'.',$configdetail->servicefee);
            }
            $totalprice +=$value['itemprice'];
        }
    }
    if($post['paymentype']=='paypal'){
        $grandtotal = $totalprice+$shippingprice+$servicefee;
    }

    else{
        $grandtotal = $totalprice+$shippingprice;
    }
}

我现在的问题是,“发货”会话中的数组可以是“邮政”,“电子邮件”或“电子邮件,邮寄”。但代码“in_array”始终只占用“foreach”函数的最后一次运行。因此,当我通过电子邮件发送第一篇文章并通过邮件发送第二篇文章时,我获得正确的服务费。但是,当我通过邮件发送第一篇文章和通过电子邮件发送第二篇文章时,它只需要数组'电子邮件'而我无法显示servicefee。

有什么想法吗?我希望我已经解释得够了。 非常感谢。

1 个答案:

答案 0 :(得分:0)

        if(isset($_SESSION["cart_item"]) && count($_SESSION["cart_item"])>0){
        foreach ($_SESSION["cart_item"] as $key => $value) {
            $totalprice +=$value['itemprice'];
        }
        foreach ($_SESSION["cart_item"] as $key => $value) {
            if(in_array('postal',$value['shipping'])){
                if($configres->servicefeeapply==2){
                    $shippingprice =str_replace(",",'.',$configdetail->servicefee);
                }
                else{
                    $shippingprice +=str_replace(",",'.',$configdetail->servicefee);
                }
                break;
            }
        }
    }

我想我是通过休息来实现的; 非常感谢你的帮助。