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

问题描述 投票:0回答:4

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

如果变量包含数字,我如何确保 if 语句仅在

$some_var
确实是一个时才返回 true?

php variables comparison
4个回答
11
投票

PHP 是一种松散类型的语言,这意味着值可以根据上下文改变它们的类型。当使用松散比较时,1 被视为等于 true,以及任何非空字符串。

如果要比较变量类型,则需要使用 3 个等号。

if($some_var === 1){

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


9
投票

数字1是“真”的简写。为了指定它实际上必须为真,您需要使用三等号运算符。这确保它匹配值和类型(分别为 1 和整数)。

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

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

4
投票
if($some_var === 1) //checks also type

3
投票

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

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

    echo 'My condition is true. Woo hoo!';
}
© www.soinside.com 2019 - 2024. All rights reserved.