2013-08-22 3 views
0

Привет Я делаю условноеразница между <>, = !, ==! В PHP

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; 
} 

Это работает, но почему?

ответ

2

==! не тот оператор, о котором вы думаете, - здесь вы смешиваете двух операторов.

==checks for equality и ! - logical not operation. Таким образом, вы на самом деле выполнения одной из них, благодаря operator precedence положить ! выше, чем операторы сравнения или присваивания:

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'] 

Вместо этого, вы должны использовать != или !==, в зависимости от того, если вы хотите, типа-принуждением произойти ,

Обратите внимание, что если вы видите, что <> работает должным образом, это идентично оператору !=.

+0

Спасибо, я сделал глупую ошибку – kilkadg