こんにちは、穂苅と申します。
このコラムでは、私が PHP8 技術者認定初級試験のための公式問題集(PHP8 技術者認定初級試験公式問題集)で学習した内容やポイントを取り上げて解説をしていくものです。
P64~69 のChapter 8 その他の演算子を学習してみました。
PHPの演算子の優先順位とは?
以下のような問題の場合、どの優先順位で計算がされて出力されるのかを見ていきます。
<?php
$dogs = 14;
$cats = 9;
echo ‘合計: ‘ . $dogs + $cats;
?>
ポイントとしては、複数の演算子が1つの式に含まれる場合に、どの演算子から順番に処理されていくのか?というところです。
今回の問題の場合は、算術演算子の + と、文字列演算子の . の優先度をどのように処理するのかが重要ですが、出力としては以下のようになります。
合計: 23
つまり、算術演算子は、文字列演算子よりも優先されて処理がされるということになります。それでは、同じ算術演算子でも * と + だとどうでしょうか?これは学校で習った感覚と同じで、 * は + よりも優先されます。
例えば、以下のようなケースです。出力はどうなるでしょうか?
<?php
$dogs = 2 + 5 * 3;
echo $dogs;
?>
掛け算が優先されるので、答えは17 になります。PHP マニュアルに細かいルールがありますので、ぜひ見てみてください。
(参考:演算子の優先順位 – PHP マニュアル )
PHPの演算子の優先順位の注意点
注意点として、PHP7 とPHP8 で実行結果が異なるケースがありました。
<?php
$dogs = 14;
$cats = 9;
echo ‘合計: ‘ . $dogs + $cats;
?>
上記のコードの解釈として、PHP7 とPHP8 でこのように処理が変わります。
// PHP7 の場合
echo (‘合計: ‘ . $dogs) + $cats; //答えは、9 になる
// PHP8 の場合
echo ‘合計: ‘ . ($dogs + $cats); //答えは、合計: 23 になる
プログラミングにおいて、分かりづらいこと、間違いやすいことは望ましくないため、対策をしておく必
要があります。例えば、カッコを使用して明示的に演算順序を決める方法です。
$dogs = 14;
$cats = 9;
echo ‘合計: ‘ . ($dogs + $cats);
もしくは、先に処理してほしいコードを先に書いておく方法です。最後の出力は計算されたあとの変数を
指定しています。
$dogs = 14;
$cats = 9;
$sum = $dogs + $cats;
echo ‘合計: ‘ . $sum;
PHP8技術者認定初級試験で正しいPHPの理解を
今回は、演算子で間違えやすい処理順序(優先度)について学習してきました。演算子の優先度についてはしっかり身につけておくことと、チームで開発をする場合は、分かりづらい記述やバージョンによって勘違いを招くような書き方は避ける必要があることを学びました。次回以降もPHP で学習した内容をシェアしていきますので、よろしくお願いいたします。
また、PHP の学習やエンジニアになるためのマイルストーンとして、PHP 試験はおすすめです。PHP8 技術者認定初級試験はPHP を扱うあらゆる方にとって有益な試験になるはずですので、ご興味がある方はぜひチャレンジしてみてください。
試験ページ: PHP8 初級試験