if语法上的PHP错误

时间:2018-01-05 10:50:51

标签: php if-statement

嗯 我了解到'学习PHP','='运算符返回右侧值 例如,A = 1234返回1234。

所以我编辑了

if($oper1 && $oper2){

if($oper1 = filter_input(INPUT_POST, 'operand1', FILTER_VALIDATE_FLOAT) &&
    $oper2 = filter_input(INPUT_POST, 'operand2', FILTER_VALIDATE_FLOAT)){

我犯了错误吗?

整个源代码如下:

if($oper1 = filter_input(INPUT_POST, 'operand1', FILTER_VALIDATE_FLOAT) && 
   $oper2 = filter_input(INPUT_POST, 'operand2', FILTER_VALIDATE_FLOAT)){ 
    //if($oper1 && $oper2){ 
        switch($_POST['op']){ 
            case 'ADD': 
                print $oper1+$oper2; 
                break; 
            case 'SUB': 
                print $oper1-$oper2; 
                break; 
            case 'MUL': 
                print $oper1*$oper2; 
                break; 
            case 'DIV': 
                print $oper1/$oper2; 
                break; 
        } 
} 

1 个答案:

答案 0 :(得分:2)

=运算符的优先级低于PHP中的&&运算符。因此,在&&命令之前评估=命令。这会为您的代码创建一个行为,这相当于以下代码:

$oper2 = filter_input(INPUT_POST, 'operand2', FILTER_VALIDATE_FLOAT);
$oper1 = filter_input(INPUT_POST, 'operand1', FILTER_VALIDATE_FLOAT) && $oper2;
if ($oper1) { ... }

由于这显然不是您想要的,您应该将变量的初始化从if条件中分离出来。这也更具可读性。

PHP operator priorities