我有以下代码工作..但我想确保我没有得到误报...因为PHP在做布尔时很有趣...我想要考虑一下如何。
$response = $_POST["response"];
if ($response == '00' || $response == '105'){ //do sth. }
我应该将if块更改为:
if ($response === '00' || $response === '105'){ //do sth. }
答案 0 :(得分:5)
来自http://www.programmerinterview.com/index.php/php-questions/difference-between-and-in-php/
==运算符只是检查左右值是否为 等于。但是,===运算符(注意额外的“=”)实际检查 查看左右值是否相等,并检查是否相同 它们具有相同的变量类型(就像它们是否都是一样) 布尔,英特尔等。)。
因此,如果您还需要检查变量类型,则应使用===
。
答案 1 :(得分:3)
使用您的示例对其进行可视化:
<?php
var_dump('00' == '00'); // bool(true)
var_dump('00' == '0'); // bool(true)
var_dump('00' == '000000'); // bool(true)
var_dump('105' == '105'); // bool(true)
var_dump('105' == '105.000'); // bool(true)
var_dump('105' == '0x69'); // bool(true)
var_dump('105' == '0105'); // bool(true)
var_dump('00' === '00'); // bool(true)
var_dump('00' === '0'); // bool(false)
var_dump('00' === '000000'); // bool(false)
var_dump('105' === '105'); // bool(true)
var_dump('105' === '105.000'); // bool(false)
var_dump('105' === '0x69'); // bool(false)
var_dump('105' === '0105'); // bool(false)
?>
答案 2 :(得分:2)
从php文档中,如果你想要除了值之外还要检查类型,你只需要===。
$a == $b Equal TRUE if $a is equal to $b after type juggling.
$a === $b Identical TRUE if $a is equal to $b, and they are of the same type.
来源:PHP.net
答案 3 :(得分:2)
当您不仅要对变量的值进行比较,还要对类型进行比较时,应该使用===
。因此,我认为在这种情况下你绝对应该使用===
。
作为一个描述性示例,1 == true
为真,但1 === true
为假。