嗯 我了解到'学习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;
}
}
答案 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条件中分离出来。这也更具可读性。