0

我试图让下面的代码正确计数,但它没有给我正确的结果——我是否遗漏了一些明显的东西?

信息是通过 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;  
}
4

2 回答 2

2

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

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

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

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

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

于 2013-11-01T16:35:36.510 回答
0

您的 If 运算符包含=(assign) 而不是==(equal to) 将您的代码更改为如下所示:

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;  
                        }
于 2013-11-01T16:35:53.823 回答