从每个/计数器输出的数字不正确


Incorrect Figures output from foreach / counter

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

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

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

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

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

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

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

您的 If 运算符包含 =(分配)而不是==(等于)将代码更改为如下所示:

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;  
                        }