我有以下代码:
if($value1 >= $value2){
echo "Value 1 is greater or equal to value 2";
}else{
echo "Something else";
}
变量$ value1和$ value2的值来自数据库。问题是每当这段代码运行时,它总是回显“其他东西”。即使value1大于value2。
两个变量都是数字。当我回应他们时:
echo $value1 . " and " . $value2;
我有以下结果:1300 and 500
有谁知道造成这个问题的原因是什么?
答案 0 :(得分:2)
我有以下结果:1300和500
您的值是字符串数据,而不是数字数据。它们只是恰好包含数字字符的字符串。由于字符'1'
“小于”字符'5'
,字符串'1300'
“小于”字符串'500'
。
将字符串转换为整数。类似的东西:
if((int)$value1 >= (int)$value2)
或:
if(intval($value1) >= intval($value2)){
您还可以将数值版本存储在自己的变量中以供以后使用,也可以包括一些错误检查,以查找非数字字符串的可能性等。但最终不要假设值是数字只是因为它直观地看起来像一个数字。数据类型很重要。
答案 1 :(得分:0)
两个或多个值之间进行比较的主要概念是确保数值的相同数据类型中的所有值都可以将类型转换为字符串值(即int,decimal或float等)... )。