0

如何$x使用三元运算符递增?

我试过$x = $x==2 ? 0 : ++;了,但显然没有用。

if($x == 2 ){ 
    $x=0; 
}else{ 
    $x++; 
}

谢谢。

4

3 回答 3

10

您需要在此处使用预增量。

$x = ($x==2) ? 0 : ++$x;  

演示!

于 2013-09-05T12:57:33.720 回答
7

最好的方法是:

$x = $x === 2 ? 0 : $x+1;

如果您坚持使用三元组来增加 var:

$x += $x === 2 ? $x*(-1) : 1;//or hard-code -2 instead of $x*(-1)

这要么加 1,$x要么加到$x*-1$x($x + (-$x)为 0)。不过,总的来说,我想补充一点,应该尽可能避免使用三元(尤其是在 PHP 中)。在这种情况下,编写:

if (++$x === 3)
{
    $x = 0;
}

做完全一样的事情,而且代码不多虽然看起来好多了。即便如此,if 语句中的增量仍然是混乱的,最好事先增量,或者:

$x = $x === 2 ? -1 : $x;
$x++;

如果你对三元有一种奇怪的偏好......并且它必须是单线:

$x = ($x ===2 ? -1 : $x) +1;

也可以……但是有一个代码高尔夫球网站可以解决这些问题……

于 2013-09-05T13:00:16.477 回答
-2

为什么不使用模块运算符呢?

$x = ++$x % 2;
于 2014-01-29T11:17:22.570 回答