0
$i = 1;
$sum = $i + ($i++);

また

$i = 1;
$sum = $i + $i + ($i++);

最終的には結果が得られますが、その$sum = 3理由を誰が教えてくれますか?

これは php のテスト コードです。自分で実行するか、このリンクを直接クリックしてください: 実行結果を確認するデモ。

ここで、$i++ と ++$i が何をするかを明確に知っていることを述べたいと思います。そして、私が尋ねるこの質問は少し異なります。「結果リスト」を見てください。

$sum = $i + ($i++);  //$sum = 3;

$sum = $i + $i + ($i++); //$sum = 3;

同じ結果になりました!!

私はコードがこのように書かれるべきであることを知っています.私は友人からこれを手に入れました.理由を説明することはできません.ここで明確な説明を求めてください.

// Result list
// $i = 1;                              //Result
// $sum = $i + ($i++);                  //3 2   (Look at this)
// $sum = $i + $i + ($i++);             //3 2   (And this)
// $sum = $i + $i + $i + ($i++);        //4 2
// $sum = $i + $i + $i + $i + ($i++);   //5 2

// Test

$i = 1;
$sum = $i + ($i++);
echo   "Result: ", $sum, " ", $i, "<br />";

$i = 1;
$sum = $i + $i + ($i++);
echo   "Result: ", $sum, " ", $i, "<br />";

highlight_file(__FILE__);
4

3 に答える 3

5

$i++ は、$i 変数を処理した後に 1 を加算することを意味します。

++ は演算子です。操作する変数の FRONT に配置する必要があります。このようにすると、変数を処理する前に 1 が追加されます。

$i = 0;
echo $i++; will echo 0;
$i = 0;
echo ++$i; will echo 1;

お役に立てれば。

于 2013-11-13T13:14:30.177 に答える
1

これは、PHP を含む C に似た言語の基本的なトピックの 1 つであり、演算子の優先順位と呼ばれます。

i++は代入++iに実行され、 whileは前に実行されます。

例:

$i = 1;
$j = 1 + $i++; // this is the same as : j = 1 + i; i += 1;
// Result: i = 2, j = 2;

$i = 1;
$j = 1 + ++$i; // this is the same as : i += 1; j = 1 + i;
// Result: i = 2, j = 3;

証明

于 2013-11-13T13:22:45.133 に答える
1

はい、あなたは5.4で正しいです。私は次のようになりました:

$sum = $i + ($i++);      //3 2  , but should be 2 2
$sum = 0 + $i + ($i++);  //2 2  , correct 
$sum = $i + $i + ($i++); //3 2  , correct

5.0.5 でテストしたところ、別の結果が得られました。

「演算子の優先順位と結合性はグループ化を指定しますが、グループが実行される順序は指定しません。最後の例では、($a + $a)または($a++)最初に実行できます。

PHP は、実際に何が起こるかを指定していません。PHP のあるバージョンでは 1 つの結果が得られ、別のバージョンでは別の結果が得られます。特定の評価順序に依存するコードを書かないでください。" https://gist.github.com/nikic/6699370

于 2013-11-13T13:38:40.910 に答える