プログラミングをする上で、演算や代入、比較などを行うときはさまざまな演算子を使用します。
この記事では、
・演算子とは?
・演算子の種類
という基本的な内容から、
・代数演算子
・代入演算子
・ビット演算子
・比較演算子
・実行演算子
・加算子/減算子
・論理演算子
・文字列演算子
・三項演算子
などの演算子の種類や使い方について解説します。
今回はそんなPHPで使用する演算子についてわかりやすく解説いたします!
演算子はさまざまな種類がありますので、普段何気なく使っている演算子のそれぞれの種類や役割について、今一度よく理解しておきましょう!
演算子とは
ここでは、演算子について今一度おさらいしてみましょう。
PHPマニュアルでは、演算子について以下のように解説しています。
演算子とは、ひとつ以上の値 (あるいはプログラミング用語における「式」) から別の値 (制御構造が式になるように) を生み出すものです。
ちょっとわかりづらいですが、演算子とは、数式やプログラミング言語などで、演算するときに使われる記号のことを指します。
プログラミングをする上で値を代入したり、計算するときは用途によってさまざまな演算子を使用します。
たとえばプログラムで加算・減算などの四則演算を行うときは、+(加算)、-(減算)、*(乗算)、/(除算)などの演算子が使われます。
また、if文などの条件判定文では、==(等しい)、!=(等しくない)などの演算子が使われますね。
このように演算子を使用することで、一つ以上の値(または式)から、別の値を生み出すことができます。
演算子の種類
一言で演算子と言っても、その種類は多岐に渡ります。
以下はPHPで主に使用する演算子の種類となります。
演算子 | 説明 |
---|---|
代数演算子 | 算術演算子とも言う。四則演算や除算、剰余などを行う |
代入演算子 | 変数の値を別の変数に代入する |
ビット演算子 | 整数値や特定のビットの評価を行う |
比較演算子 | 2つの値を比較する |
実行演算子 | シェルコマンドとして実行する |
加算子/減算子 | インクリメントやデクリメントを行う |
論理演算子 | 真偽値を返す |
文字列演算子 | 文字列の結合、代入を行う |
三項演算子 | 1つの演算子処理で3つの式を行う |
次項からは各演算子について、基本的な使い方を解説していきます。
演算子の使い方
代数演算子
代数演算子は加算・減算などの四則演算や除算、剰余、累乗などの計算を行うときに使用します。
代数演算子は算術演算子と呼ぶこともあります。
以下に代数演算子の使い方を記述します。
//加算 $a = 10 + 5; // $a = 15 $b = 10; $c = $a + $b; // $c = 25 //減算 $a = 10 - 5; // $a = 5 $b = 10; $c = $a - $b; // $c = -5 //乗算 $a = 10 * 5; // $a = 50 $b = 10; $c = $a * $b; // $c = 500 //除算 $a = 100 / 5; // $a = 20 $b = 5; $c = $a / $b; // $c = 4 //剰余 $a = 10 % 3; // $a = 1 //累乗 $a = 10 ** 3; //$a = 1000
代入演算子
代入演算子は、‘=’を使用して、左オペランドに右オペランドの式や値を代入するときに使用します。
プログラミング言語によっては条件式で「if a = b」のように使用されることもあります。
//数値を代入 $b = 10; //値を代入 $a = $b; // $a = 10 //式を代入 $a = ($b + 5) / 3; // $a = 5 //関数の返り値を代入 $a = calc(10); // $a = 20 function calc($num){ return $num + 10; } //文字列を代入 $str = "abcde"; // $str = abcde
ビット演算子
ビット演算子は、整数値やビットなどの評価や操作を行うときに使用します。
ビットとは、コンピューターが扱う情報量の最小単位のことを指します。ビットは8ビットの組で1バイトとなります。
また、ビットは2進数の0と1で表現されます。
ビット演算子:
演算子 | 式 | 説明 |
---|---|---|
ビット積 | $a & $b | $aと$bの両方のビットがセットされていると1、されていないと0 |
ビット和 | $a | $b | $a または $b のどちらかにセットされていると1、されていないと0 |
排他的論理和 | $a ^ $b | $a または $b のどちらか一方にセットされていると1、両方がセットまたはセットされていないと0 |
否定 | ~$a | $a の各ビットがセットされている場合は0、セットされていないと1 |
左シフト | $a << $b | $a のビットを左に $b ビットシフトする。各シフトは2をかけることを意味します。 |
右シフト | $a >> $b | $a のビットを右に $b ビットシフトする。各シフトは2を割ることを意味します。 |
比較演算子
比較演算子は主に2つの値を比較するときに使用します。
比較演算子は値の等しい、等しくない、より少ない、より多いなど、さまざまな種類があります。
以下は、PHPで主に使われる比較演算子です。
式 | 説明 |
---|---|
$a == $b | 等しい |
$a === $b(値が等しく、型が同じであるか) | 等しい |
$a != $b | 等しくない |
$a <> $b | 等しくない |
$a !== $b(値が等しくない、型が同じでない) | 等しくない |
$a < $b | より少ない |
$a > $b | より多い |
$a <= $b | より少ないか等しい |
$a >= $b | より多いか等しい |
$a <=> $b(PHP7以降で使用可能) | 宇宙船 |
以下に比較演算子の使用例を記述します。
$a = 10; if($a == 10) // 等しい $b = '10'; if($a === $b) // 等しくない if($a === 10) // 等しい if($a != 20) // 等しくない if($a <> 20) // 等しくない if($a !== 20) // 等しくない if($a < 20) // より少ない if($a > 5) // より多い if($a <= 10) // より少ないか等しい if($a >= 10) // より多いか等しい if($a <=> 5) // 宇宙船
このサンプルのように、比較演算子は値や式を比較して、その結果をboolean型で返します。
注意する点として、比較演算子「==」は値がint型の10と文字列型の’10’を比較しても結果はTRUEを返します。
そのため、型まで含めた厳密な比較を行いたい場合は比較演算子「===」を使用します。
実行演算子
実行演算子を指定すると、Linuxで使用されるシェル・コマンドと同様の扱いとなります。
実行演算子は、バッククォートでコマンドを指定します。
以下の例では「ls -ltr」コマンドで、プログラム実行時のディレクトリに存在するファイル、ディレクトリの一覧を更新日付順に一覧で出力します。
サンプルプログラム:
<?php $result = `ls -ltr`; echo "<pre>$result</pre>"; ?>
加算子/減算子
加算子/減算子は、変数の値をインクリメント(1ずつ加算)及びデクリメント(1ずつ減算)するときに、よく使用されます。
式 | 説明 |
---|---|
++$a | 前置加算子 |
$a++ | 後置加算子 |
–$a | 前置減算子 |
$a– | 後置減算子 |
以下に加算子/減算子を使用する方法を記述します。
//前置き演算子 $a = 10; echo ++$a; //結果:11 //後置加算子 $a = 10; echo $a++; //結果:10 echo $a; //結果:11 //前置減算子 $a = 10; echo --$a; //結果:9 //後置減算子 $a = 10; echo $a--; //結果:10 echo $a; //結果:9
論理演算子
論理演算子は、比較演算子をより複雑にした条件式です。
例えば、右辺の条件式と、左辺の条件式を同時に評価したいときなどに使用されます。
式 | 説明 |
---|---|
$a and $b | 論理積 |
$a or $b | 論理和 |
$a xor $b | 排他的論理和 |
! $a | 否定 |
$a && $b | 倫理積 |
$a || $b | 論理和 |
以下に論理演算子を使用する方法を記述します。
$a = 10; //論理積(and) if($a > 5 and $a < 15) echo '左辺の条件式と右辺の条件式がTRUE'.'<br>'; //論理和(or) if($a > 5 or $a < 5) echo '左辺の条件式と右辺のどちらかがTRUE'.'<br>'; //排他的論理和(xor) if($a > 5 xor $a < 5) echo '左辺の条件式と右辺のどちらかがTRUEもしくはTRUEでない'.'<br>'; //否定(!) if(!($a > 15)) echo '条件式がTRUEでない'.'<br>'; //論理積(&&) if($a > 5 && $a < 15) echo '左辺の条件式と右辺の条件式がTRUE'.'<br>'; //論理和(||) if($a > 5 || $a < 5) echo '左辺の条件式と右辺のどちらかがTRUE'.'<br>';
文字列演算子
文字列の演算子は、右の引数と左の引数をピリオド(.)で結合する結合演算子と、右の引数に左の引数を追加(.=)する結合代入演算子があります。
以下に文字列の2つの演算子を使用する方法を記述します。
サンプルプログラム
<?php $a = 'Samurai'; //結合演算子 $b = $a . 'Engineer'; echo $b; //結果:SamuraiEngineer echo '
'; //結合代入演算子 $a .= 'Engineer'; echo $a; //結果:SamuraiEngineer ?>
三項演算子
三項演算子は、1つの演算子処理で3つの式を使用するための比較処理です。
三項演算子はまず条件式を評価し、式の結果がTRUEの場合は式1を返し、結果がFALSEの場合は式2を返します。
$str1 = 'apple'; $str2 = 'orange'; $ans = $str1 == $str2 ? '等しい' : '等しくない'; echo $ans;
三項演算子については、以下の記事でも詳しく解説していますので、ぜひ参考にしてくださいね!
まとめ
ここでは、PHPで使用するさまざまな演算子について、意味や使い方を解説しました。
演算子にはさまざまな用途があり、プログラミングにおける基本的な役割を持ちますので、それぞれの演算子の役割については、よく理解しておきましょう。
もし、演算子の使い方を忘れてしまったら、この記事を思い出してくださいね!