我试图让下面的代码正确计数,但它没有给我正确的结果 - 我错过了一些明显的东西吗?
信息通过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;
}