2016-11-18 111 views
0

我有以下代码:PHP的if/else不工作,因为它应该

if($value1 >= $value2){ 
    echo "Value 1 is greater or equal to value 2"; 
}else{ 
    echo "Something else"; 
} 

变量$ value1和$值2是从数据库中有自己的价值观。问题是,无论何时运行此代码,它总是回显“其他”。即使值1大于值2。

这两个变量都是数字。当我赞同他们:

echo $value1 . " and " . $value2; 

我有以下结果:1300 and 500

有谁知道是什么原因造成这个问题?

+4

这是不可能的。请在if条件 –

+0

之前回显'$ value和$ value2'我怀疑$ value1实际上是> = $ value2。你是将一个字符串与一个数字进行比较? – jcorry

+2

请运行'var_dump($ value1,$ value2);'并在此处发布结果 –

回答

2

我有以下结果:1300和500

你的值是字符串数据,不是数字数据。它们只是恰好包含数字字符的字符串。并且由于字符'1'是“小于”字符'5',字符串'1300'是“小于”字符串'500'

将您的字符串转换为整数。喜欢的东西:

if((int)$value1 >= (int)$value2) 

或:

if(intval($value1) >= intval($value2)){ 

您也可以存储在自己的变量的数字版本供以后使用为好,也许有一些错误检查非数字字符串的可能性等等。但最终不要假设数值只是数字,因为它看起来像一个数字。数据类型很重要。

+0

很简单...非常感谢! – Andy19955

0

  • 后面两个或多个值之间的比较主要的概念,就是要确保在我们类型转换字符串值到他们的尊重类型的数值相同的数据类型的所有值(即int,十进制或浮点数等)。

    • 对于当我们使用小于“<”或大于“>”运算符时,大部分时间值(即索引等)都是整型数据类型。这适用于所有最常见的编程语言。