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 をインクリメントするためだけに 3 進数を使用することを主張する場合:

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

これは $x に 1 を$x加算するか、または$x*-1$x ($x + (-$x)は 0) に加算します。ただし、全体として、3 進数 (特に PHP の場合) はできるだけ避ける必要があることを追加したいと思います。この場合、次のように記述します。

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

まったく同じことを行い、それほど多くのコードはありませんが、見た目はずっと良くなっています。それでも、if ステートメントのインクリメントはまだ厄介です。事前にインクリメントするのが最善です。または:

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

もしあなたが 3 項に対する奇妙な好みを持っているなら...そしてそれワンライナーでなければならないなら:

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

も動作します...しかし、これらの種類のコードゴルフサイトがあります...

于 2013-09-05T13:00:16.477 に答える
-2

そのためにモジュール演算子を使用しないのはなぜですか?

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