运算符 '+=' 表现怪异

Operator '+=' behaves weird

我的问题是使用此代码我得到 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

我希望有人能给我解释一下,因为对我来说这很奇怪。

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