Оператор ‘+ =’ ведет себя странно

Моя проблема в том, что с этим кодом я получаю 3, но, как мне кажется, я должен получить 1, но просто не знаю, как это исправить.

Пример кода:

$counter = 0;
if (($counter = test2() !== false)) {
$counter += 2;
print $counter;
}

function test2() {
return -1;
}

Выход: 3

Если я сделаю это наоборот, он будет работать нормально, и я получу -1.
Может кто-нибудь, пожалуйста, скажите мне, что я делаю не так.

Пример кода:

$counter = 0;
if (($counter = test2() !== false)) {
$counter -= 2;
print $counter;
}

function test2() {
return 1;
}

Выход: 1

Я надеюсь, что кто-то может объяснить это мне, потому что для меня это совершенно странно.

-1

Решение

PHP рассматривает это как:

$counter = 0;
if ($counter = (test2() !== false)) { //see?
//so counter is equal to 1
$counter += 2;
print $counter;
}

function test2() {
return -1;
}

этот способ лучше:

$counter = 0;
if (($counter = test2()) !== false) { //see?
//now counter is -1
$counter += 2;
print $counter;
}

function test2() {
return -1;
}
2

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

Других решений пока нет …

По вопросам рекламы [email protected]