我应该使用==或===表示... if($ POST [" var_name"] ==' my_string')然后继续

时间:2014-01-09 01:52:16

标签: php

我有以下代码工作..但我想确保我没有得到误报...因为PHP在做布尔时很有趣...我想要考虑一下如何。

$response = $_POST["response"];

if ($response == '00' || $response == '105'){  //do sth. }

我应该将if块更改为:

if ($response === '00' || $response === '105'){  //do sth. }

4 个答案:

答案 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为假。