まずはこれを見てほしい。
<?php $hoge1 = 1; $hoge2 = $hoge1++; print_r($hoge2 . PHP_EOL); // 1 print_r($hoge1 . PHP_EOL); // 2
最初$hoge1に1が代入されており、$hoge1をインクリメントしたものを
$hoge2に代入したから、$hoge2は2になることを期待していたのだが、
2にならなかった。
この部分ですね。
$hoge2 = $hoge1++;
ところが、あとでこの$hoge1を出力してみると2になっている。
もっと言うと、この$hoge1に+1すると、3が出力される。
こんな風に。
<?php $hoge3 = $hoge1 + 1; print_r($hoge3 . PHP_EOL); // 3
横着せずに複数行に分けて処理を書いたらどうだろうか。
<?php $hoge1 = 1; $hoge1++; $hoge4 = $hoge1; print_r($hoge4 . PHP_EOL); // 2 print_r($hoge1 . PHP_EOL); // 2
今度はちゃんと$hoge4が2になりました。
なお、
$hoge1 = &$hoge2++;
とか書いてもParse Errorになるから気をつけるように。