这个问题很简单,但我不确定解决它的最佳方法是什么。
如果变量包含数字,我如何确保 if 语句仅在
$some_var
确实是一个时才返回 true?
PHP 是一种松散类型的语言,这意味着值可以根据上下文改变它们的类型。当使用松散比较时,1 被视为等于 true,以及任何非空字符串。
如果要比较变量类型,则需要使用 3 个等号。
if($some_var === 1){
这里有更多信息http://php.net/manual/en/language.operators.comparison.php
数字1是“真”的简写。为了指定它实际上必须为真,您需要使用三等号运算符。这确保它匹配值和类型(分别为 1 和整数)。
$some_var = 1;
$other_var = "1";
$some_var === 1; // True
$other_var === 1; // False
if($some_var === 1) //checks also type
理想情况下,您应该使用 ===,但缺点是它会同时检查值和类型。如果您想检查 1 作为整数,这应该没问题。但是由于 1 也可以是字符串值(表单提交的数据始终是字符串),您的 === 比较可能会失败。试试这个:
if ($my_var == 1 && is_numeric($my_var)) {
echo 'My condition is true. Woo hoo!';
}