「PHP/入門/変数と値」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎unset: unsetした変数に束縛されていたメモリーオブジェクトのリファレンスカウントが一つ減るので、メモリーが開放される可能性があります。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎演算子の優先順位と結合方向: →‎演算子の優先順位: PHPも、多くのプログラミング言語と同じく演算子に優先順位があります。→‎演算子の結合方向: 演算子の結合方向 異なる優先順位の演算子であれば、優先順位に従い評価すればよいのですが、同じ優先順位の演算子が続いた場合はどうでしょう。
タグ: 2017年版ソースエディター
158 行
::とはいうものの、PHPは、演算子・関数・コマンドの区別が曖昧で、公式のドキュメントでも混用が見られます。
::なにか型ジャグリングと通じるものがありますね。
 
== 演算子の優先順位と結合方向 ==
=== 演算子の優先順位 ===
PHPも、多くのプログラミング言語と同じく演算子に優先順位があります。
1 + 2 * 3
( 1 + 2 ) * 3
ではなく
1 + ( 2 * 3 )
の順で評価されます(それぞれの演算子の優先順位については、後ほど表にまとめます)。
 
== 演算子の結合方向 ==
異なる優先順位の演算子であれば、優先順位に従い評価すればよいのですが、同じ優先順位の演算子が続いた場合はどうでしょう。
1 + 2 + 3
…これは交換則が成り立つので良い例ではないですね。
1 - 2 - 3
1 - ( 2 - 3 )
ではなく
( 1 - 2 ) - 3
の順で評価されます。このような評価順序の演算子を左結合の演算子と呼びます。
 
演算子は概ね左結合ですが、少数の例外があります。
$a = $b = 42;
これ(代入演算子)は、
$a = ( $b = 42 );
の順(右結合)で評価されます。
 
また、
2 ** 3 ** 4
(冪乗演算子)も
2 ** ( 3 ** 4 )
の順(右結合)で評価されます。
 
== リテラル ==