Php foreach/计数器输出的数字不正确

Php foreach/计数器输出的数字不正确,php,Php,我试图让下面的代码正确计数,但它没有给我正确的结果-我是否遗漏了一些明显的东西 信息是通过XML获取的(一切正常)-目前foreach循环经过两次。如果变量revrat设置为3,2或1,则它将添加到$negrat计数器(当前是这样的)-但是,即使revrat为3,2或1,它仍将添加到$posrat计数器,尽管If语句指示添加到该计数器只应为4或5 我试过了,不管有没有语音标记,都得到了相同的答案 谢谢你的关注 foreach($xml->FEEDBACK as $value) {

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

信息是通过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语句为true。如果将其更改为:

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

查找
$a=1
$a==1
之间的差异。从技术上讲,
=
运算符返回正在设置的值;因此,
if($x=0)
将返回false。