之间的差异<>;,=!,==!在php中

之间的差异<>;,=!,==!在php中,php,conditional,Php,Conditional,嗨,我正在做一个有条件的测试 if ($row['ConsignadaCaja'] === 'si' && $row['Estado'] ==! 'I') { $pago = 0; } 它不能像我想要的那样工作 所以我试着用 if ($row['ConsignadaCaja'] === 'si' && $row['Estado'] =! 'I') { $pago = 0; } 但它也不起作用 最后

嗨,我正在做一个有条件的测试

if ($row['ConsignadaCaja'] === 'si' && $row['Estado'] ==! 'I') {
                $pago = 0;
}
它不能像我想要的那样工作

所以我试着用

if ($row['ConsignadaCaja'] === 'si' && $row['Estado'] =! 'I') {
                $pago = 0;
}
但它也不起作用

最后,我尝试一下:

if ($row['ConsignadaCaja'] === 'si' && $row['Estado'] <> 'I') {
                $pago = 0;
}
if($row['commissionadacaja']=='si'&&$row['Estado']'I'){
$pago=0;
}

它是有效的,但不知道为什么?

==
不是您正在考虑的运算符-您在这里混合了两个运算符

==
,和
是一个。因此,由于放置了
,您实际上正在执行其中之一高于比较运算符或赋值运算符:

if( $row['Estado'] = (!'I'))  // Assigns the inverted value of 'I' to $row['Estado']
if( $row['Estado'] == (!'I')) // Compares the inverted value of 'I' to $row['Estado']
相反,您应该使用
=
==,具体取决于您是否希望发生类型强制

请注意,如果您看到
按预期工作,这与
相同=操作员