Странное поведение при умножении PHP

#php #if-statement #operators #multiplication

#php #if-statement #операторы #умножение

Вопрос:

Я не знаю, пострадал ли я от какого-либо повреждения мозга или зрения, но я не могу понять поведение этого кода:

 $po=1;
$po2=0;
echo $po.'*'.$po2.'=';
if($po*$po2) $po=1;
echo $po;
  

Я бы ожидал, что результат будет равен 1 * 0 = 0, но на самом деле это 1 * 0 = 1.

Ответ №1:

$po всегда равно 1. Вы инициализируете его равным 1, а позже в вашем if случае у вас его нет else . Так оно и остается 1 .

Вместо этого добавьте `else:

 $po = 1;
$po2 = 0;
echo $po.'*'.$po2.'=';
if ($po * $po2) {

  // Unnecessary - it's already 1
  $po = 1;
}
// Set it to 0...
else {
  $po = 0;
}
echo $po;