1

今日、私はphpのあいまいさに気づきました。このコードを実行しました

$i = 5;
$i = $i ++;
var_dump($i); //output 5 instead of 6 

の初期値を想定します$i is 5。これで、新しい値は6になるはずですが、実際には。であることがわかります5。私が同じことをしたとき、C++私は6期待通りになりました。何年もの間見過ごされてきたphpのバグなのか、それとも他の何かなのか。誰か説明してもらえますか?

4

3 に答える 3

5

なぜ値6であると思いますか?

$iがインクリメントされている場合、インクリメントの値が返され(ポストインクリメント演算子を使用しているため)、に割り当てられ$iます。論理的なようです。

于 2012-11-07T16:50:23.333 に答える
3

試す

$i = ++$i;

正しい結果が得られます。

問題は、$i = $i++そうすると$i、ステートメントの後にインクリメントされますが、反対側の古いものに割り当てているため、変数をインクリメントすることはできません。

于 2012-11-07T16:50:31.820 に答える
1

インクリメント/デクリメント演算子については、マニュアルを確認してください。あなたが求める振る舞いは正常であり、C++開発者としてのあなたの直感に反するだけです。

$ i++は最初に$iの値を返し、次に実行してインクリメントしますが、++$iは$iをインクリメントしてから返します。

于 2012-11-07T16:51:43.643 に答える