$a=1;
$b=$a++;
//Find $a, $b
2 番目の文は、b もアドレスを指すことを意味します。 3 番目の文は、使用後に a の値が 1 増加することを意味するため、$b=1 になります。 重要なのは、後の $a++ が理解できないということです。これは、使用後に 1 増加することを意味するものではありません。 $a=2;
しかし、$b のアドレスは a のアドレスと同じなので、$b も 2 に等しいということではないでしょうか?それとも、3 番目の文の後の $a++ はまったく実行されないのでしょうか?この質問の答えは $a と $b は両方とも 1 です
たとえば、これと比較してください
$a=1;
これは $ ではありませんか? b=1、$a=2
少しめまいがします。 。 。
ディスカッションへの返信 (解決策)
$a=1;
結果:
$a = 1;$b = $a++;var_dump($a, $b);/*int(2)int(1)*/$a = 1;$b = &$a;$a++;var_dump($a, $b);/*int(2)int(2)*/$a = 1;$b = &$a;$b = $a++;var_dump($a, $b);/*int(1)int(1)*/
演算子の優先順位が分からない場合は、こうすれば理解できます!
<?php$a=1;$b=&$a; //相当于告诉你 a、b指向同一地址!$c=$a++; //先把a的当前值赋给c 之后 a自加1$b=$c;
$a=1;$b=$a; // 这时 b=1 a=1$b=$a++; // a先赋值给b,然后再自增 b=1 a=2echo $a;echo $b;
$a=1;$b=&$a; // b引用a,就是a,b是指向同一内存地址$b=$a++; // a 把值读出后执行自增,a=2 b=2,然后再把值赋值给b,所以b=1 a=1echo $a;echo $b;