PHPのインクリメント/デクリメント演算子の優先順位と結合性の原則に従っていないように見えるため、誰かがこのコードに頭を包むのを手伝ってくれませんか : /php.net/manual/en/language.operators.increment.php )
1番目の例 -
$a = [ 0, 1, 2 ];
$i = 0;
$a[$i++] = $i;
var_dump( $a );
/* 出力は次のとおりです。
array (size=3)
0 => int 1
1 => int 1
2 => int 2
そして、ここに何が起こっているのかについての私の解釈があります:
1. Array index gets calculated, so $a[$i++] is $a[0]
2. Then rval gets calculated (which after $i++ in the step above) is now 1
3. The value of the expression gets calculated which is 1.
ここまでは順調ですね。*/
2番目の例 -
$a = [ 0, 1, 2 ];
$i = 0;
$a[$i] = $i++;
var_dump( $a );
/* 出力は次のとおりです。
array (size=3)
0 => int 0
1 => int 0
2 => int 2
そして、ここに何が起こっているのかについての私の解釈があります:
1. The array index gets calculated which should be 0 ($a[0]), but ACTUALLY it is 1 ($a[1])
2. The rval gets calculated , which is $i++ , so the value now is 0.
3. The expression value gets calculated , which should be 1 after $i++ in the step above, but ACTUALLY it is 0.
基本的に、上記の 2 番目の例の手順 1 と 3 を理解できません。*/