Is=!一个声明,这就是为什么这种交替的条件有效


Is =! a declaration and is that why this alternating conditional works?

我有一个可怕的忏悔。我使用下面的变体已经很久了。

for($x=0;10>$x;++$x){
    echo '<li style="color:#'.(($c=!$c)? "fff":"eee").'">example $x</li>";
}

我的困境是我不完全理解它是如何运作的。我知道$c=$c使三元条件交替,但我不明白是怎么做的。在谷歌上搜索"php=!"和类似的内容没有任何帮助(考虑到查询,这并不奇怪)。

!=是运算符,但它使用=!

这是一个三元条件声明吗?如果是,这个是如何工作的?我理解一般的条件声明,但不理解这个。。。假设它甚至是一个。

如有任何回复或文件链接,我们将不胜感激。

它们是两个独立的运算符。你应该把它读成

$c = !$c;

换句话说,将表达式!$c的结果赋值回变量$c。因此,它确实切换了$c的值。

此外,像这样的赋值也会返回赋值,因此您可以立即对其求值。因此,用文字来说,表达式($c=!$c)? "fff":"eee"表示:

反转$c的值。如果新值为true,则返回'fff',否则返回'eee'。

它不是运算符,它只需要更好的间距:

$x = !$x;

它只是在反转数值。

=!不是运算符。这是两个=表示赋值,!表示否定。

如果$ctrue,则!$cfalse(反之亦然)。

作业会根据其新价值进行评估。

您将$c设置为非自身。所以,如果$c==true,你说的是$c=not true,也就是说,对于三进制,false也将被视为false。在下一次迭代中,您设置$c=not false,即true等。