Назначение добавления не будет назначено внутри условного

Это мое (интуитивное) понимание того, что с помощью оператора присваивания сложения += в PHP переменные целочисленного типа приводят к результату сложения, в то же время увеличивая левый операнд на значение правого операнда одновременно.

Это понимание кажется неправильным, поэтому мой вопрос. Учитывая следующий фрагмент кода:

$itr = 10;
$incr = 10;

if ($itr += $incr > 10) { // evaluates as true...
echo $itr; // but value of $itr remains unchanged
}

Почему выводится 10 вместо 20?

То же самое происходит с использованием троичной формы:

echo ($itr += $incr > 10) ? $itr : 'neverhere'; // prints 10
// Note: I know that parentheses aren't really necessary here, it's just a personal practice.

Что здесь происходит?


Редактировать: Ну, я узнал, что вокруг выражения $itr += $incr с помощью скобок исправляет очевидную проблему. Тем не менее, правильное объяснение того, почему было бы очень круто. Моя благодарность заранее.

1

Решение

Приоритет оператора: > оценивается первым и приводит к false, Когда приведен к целому числу, чтобы добавить к вашей ценности, false приведен к 0,

Так:

$itr += $incr > 10

будет выглядеть так:

$itr += ($incr > 10)
$itr += (false)
$itr += 0
1

Другие решения

В операторе if вы только оцениваете возможность увеличения $ itr на $ incr, но вы не эффективно УСТАНАВЛИВАЕТЕ PHP для этого. Таким образом, он никогда не хранит новое значение.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector