0

次のコードがあるとします。

<?php           
    $i = 1;
    $user_login = "some_name";

    do {
        $user_login_tmp = $user_login . "_" . ($i++);
        echo $user_login_tmp . "\n";
    } while ($i<10);
?>

このデモ(クリック可能!) で見られるように、最初のechoechoes some_name_1.
そこにあるので、これは私にはちょっと奇妙に思え$i++ます。
最初の出力がそうではないのは..._2なぜですか?何か不足していますか?

do-while ループの PHP マニュアル ページで答えを探してみましたが、答えが見つかりませんでした...

4

5 に答える 5

4

$i++ポストインクリメントを行い、変数を返し、1 ずつインクリメントします。

http://php.net/manual/en/language.operators.increment.php

説明した動作は、 pre-increment: を使用して実現できます++$i

于 2012-12-13T22:05:17.353 に答える
3

$i++ポストインクリメントです。つまり、値が取得された後にインクリメントが行われます。値が取得される前にインクリメントが行われるプレインクリメントに++$i使用できます。

一般に、ほとんどのプログラマは、ポスト インクリメントが必要な場合を除き、プリ インクリメントを使用することを好みます。必要な値が 1 つだけであるため、これらはわずかに安価になる傾向があります。プレインクリメントでは、インクリメントを実行している間、古い値を維持する必要があるため、コストが少し高くなります。

于 2012-12-13T22:04:47.083 に答える
2

では$i++++の値を取得した後に が発生します$i。逆に、++$i最初にインクリメントしてから、新しい値を「返します」。

于 2012-12-13T22:04:39.643 に答える
2

$i++ポストインクリメントとは、次のことを意味します。return $i and then increments $i by one.

..._2コードを(new demo)に変更すると、デモの出力は で始まります(++$i)

インクリメント演算子に関する PHP.net のページを確認してください。

http://php.net/manual/en/language.operators.increment.php

++$a    Pre-increment   Increments $a by one, then returns $a.

$a++    Post-increment  Returns $a, then increments $a by one.

--$a    Pre-decrement   Decrements $a by one, then returns $a.

$a--    Post-decrement  Returns $a, then decrements $a by one.
于 2012-12-13T22:08:55.027 に答える
1

$i++ は後置演算子を使用しています。$i が連結された後、評価されます。

于 2012-12-13T22:04:48.017 に答える