我有一个可怕的忏悔。我使用下面的变体已经很久了。
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;
它只是在反转数值。
=!
不是运算符。这是两个:=
表示赋值,!
表示否定。
如果$c
是true
,则!$c
是false
(反之亦然)。
作业会根据其新价值进行评估。
您将$c设置为非自身。所以,如果$c==true,你说的是$c=not true,也就是说,对于三进制,false也将被视为false。在下一次迭代中,您设置$c=not false,即true等。