运营商' + ='表现得很奇怪

时间:2015-02-23 20:40:32

标签: php operators

我的问题是,使用这段代码我得到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 个答案:

答案 0 :(得分:2)

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