来自foreach / counter的输出不正确

时间:2013-11-01 16:29:18

标签: php

我正在尝试让下面的代码正确计算,但它没有给我正确的结果 - 我错过了一些明显的东西吗?

通过XML抓取信息(一切正常) - 目前foreach循环经过两次。如果变量revrat设置为3,2或1,则它会添加到$ negrat计数器(它当前正在执行) - 但是即使revrat是3,2或1,它仍然被添加到$ posrat计数器,尽管if语句表示只应该将4或5添加到该计数器。

我尝试过有和没有语音标记 - 得到相同的答案。

感谢您的期待!

foreach($xml->FEEDBACK as $value)
{
    $feedbackitem = $value->PRODUCTCODE;
    if ($feedbackitem == $skuvalue): 
        $i2++;
        $revrat = 3;        

        if($revrat = "1" or $revrat = "2" or $revrat = "3") :
            $negrat++;
        endif;
        if($revrat = "4" or $revrat = "5"):
            $posrat++;
        endif;  
    endif;  
}

2 个答案:

答案 0 :(得分:2)

单个=设置值,==测试值是否相等。所以你的if语句:

if($revrat = "4" or $revrat = "5")

只是测试它可以将$ revrat设置为等于4或5.两者都返回true,因此if语句为true。如果您将其更改为:

if($revrat == "4" or $revrat == "5")

然后它将检查$ revrat的当前值是否等于4或5并返回您正在寻找的响应。

答案 1 :(得分:0)

你的if运算符包含=(assign)而不是==(等于),将代码更改为:

foreach($xml->FEEDBACK as $value)
                        {
                            $feedbackitem = $value->PRODUCTCODE;
                            if ($feedbackitem == $skuvalue): 
                                $i2++;
                                $revrat = 3;        

                                if($revrat == "1" or $revrat == "2" or $revrat == "3") :
                                    $negrat++;
                                endif;
                                if($revrat == "4" or $revrat == "5"):
                                    $posrat++;
                                endif;  
                            endif;  
                        }