这个PHP比较是一样的吗?

时间:2015-03-12 20:33:52

标签: php

我基本上有这个PHP代码:

<?php 
   $num_1 = $_POST['num_1'];

   if( $num_1 == 1 || $num_1 == 2 ){
       // Do something
   }
?>

我知道$num_1可以是12。这是我期望$_POST['num_1']

的价值

我想知道的是,我可以使用或使用if( $num_1 == 1 || $num_1 == 2 )而不是<?php $num_1 = $_POST['num_1']; if( $num_1 == ( 1 || 2 ) ){ // Do something } ?> 使用:

if( $num_1 == 1 || $num_1 == 2 ){}

此处的不同之处在于之前我使用的是if( $num_1 == ( 1 || 2 ) ){},但现在我正在使用{{1}}

我试图绕过这个。有人能提供有用的解释吗?哪个更有效率和最佳实践?

1 个答案:

答案 0 :(得分:2)

不一样。您可以通过执行类似的操作来测试它:

$num_1 = 1;
var_dump($num_1 == ( 1 || 2 )); //true
var_dump($num_1 == 1 || $num_1 == 2); //true
$num_1 = 2;
var_dump($num_1 == ( 1 || 3 )); //true
var_dump($num_1 == 1 || $num_1 == 3); //false

这样做的主要原因是当你试图这样做时:

if(1 || 2)

PHP会将整数转换为布尔值。所以,你的表达成为:

if(true||true) //what is actually true