PHP if($ some_var == 1)总是返回true,即使它不是真的吗?

时间:2011-11-18 20:32:20

标签: php variables comparison

这个问题很简单,但我不确定解决问题的最佳方法是什么。

如果变量包含数字,如果$some_var确实是一个,我怎样才能确保if语句只返回true?

4 个答案:

答案 0 :(得分:11)

你需要使用3等于

if($some_var ===1){

这里有更多信息http://php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:9)

数字1是“true”的快捷方式。为了指定它必须实际为true,您需要使用三重等于运算符。这确保它匹配值和类型(分别为1和整数)。

$some_var = 1;
$other_var = "1";

$some_var === 1; // True
$other_var === 1; // False

答案 2 :(得分:4)

if($some_var === 1) //checks also type

答案 3 :(得分:3)

理想情况下,您应该使用===,但其缺点是它将检查值和类型。如果要将整数检查为1,这应该没问题。但由于1也可能是字符串值(表单提交的数据总是字符串),因此===比较可能会失败。试试这个:

if ($my_var == 1 && is_numeric($my_var)) {

    echo 'My condition is true. Woo hoo!';
}