演算子の種類

 プログラムの中で処理を表現するために、演算子を使用します。次のような種類があります。

■ 算術演算子

 値を計算します。

演算子 意味 使用例
+ 一方の数値を他方の数値に足す $num1 + $num2
- 一方の数値を他方の数値から引く $num1 – $num2
- 数値の符号を反転させる -$num1
* 一方の数値に他方の数値を掛ける $num1 * $num2
/ 一方の数値を他方の数値で割る $num1 / $num2
% 一方の数値を他方の数値で割った時の余りを求める $num1 % $num2

算術演算子

○ ファイル

 次のようにファイルを作成してください。

ファイルの種類 PHP ファイル
ファイル名 arithmetictest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. <?php
  2. //変数の用意
  3. $num1 = 10;
  4. $num2 = 3;
  5. //文字化け対策
  6. header("Content-Type: text/html; charset=utf-8");
  7. //算術演算の結果を表示する
  8. print('加算:' . ($num1 + $num2) . '<br>');
  9. print('減算:' . ($num1 - $num2) . '<br>');
  10. print('反転:' . (-$num1) . '<br>');
  11. print('乗算:' . ($num1 * $num2) . '<br>');
  12. print('除算:' . ($num1 / $num2) . '<br>');
  13. print('剰余:' . ($num1 % $num2) . '<br>');

○ 実行結果

実行結果
実行結果

○ 解説

 10行目で変数$num1に格納している値と、変数$num2に格納している値を加算しています。その後、Webブラウザーに書き出しています。11~15行目も同様に変数の値を計算して表示しています。

■ 代入演算子

 計算結果を代入します。

演算子 意味 使用例
= データを変数に代入する $num = 2
*= 変数に格納されているデータと乗算し、その結果を変数に代入する $num *= 2
/= 変数に格納されているデータと除算し、その結果を変数に代入する $num /= 2
%= 変数に格納されているデータと除算し、その余りを変数に代入する $num %= 2
+= 変数に格納されているデータと加算し、その結果を変数に代入する $num += 2
-= 変数に格納されているデータを減算し、その結果を変数に代入する $num -= 2
.= 変数に格納されているデータと文字列を連結し、その結果を変数に代入する $str .= ‘文字’

代入演算子

○ ファイル

 次のようにファイルを作成してください。

ファイルの種類 PHP ファイル
ファイル名 assignmenttest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. <?php
  2. //文字化け対策
  3. header("Content-Type: text/html; charset=utf-8");
  4. //代入演算とその結果を表示する
  5. $num = 10;
  6. print('代入:' . $num . '<br>');
  7. $num *= 2;
  8. print('乗算:' . $num . '<br>');
  9. $num /= 2;
  10. print('除算:' . $num . '<br>');
  11. $num %= 3;
  12. print('剰余:' . $num . '<br>');
  13. $num += 2;
  14. print('加算:' . $num . '<br>');
  15. $num -= 1;
  16. print('減算:' . $num . '<br>');
  17. $str = 'メロンが';
  18. $str .= '食べたい。';
  19. print('文字列:' . $str . '<br>');

○ 実行結果

実行結果
実行結果

○ 解説

 6行目は変数$numに値10を格納します。8行目は先ほど格納した10に2を乗算して再び変数$numに格納します。10行目は先ほど格納した20を2で除算して変数$numに格納します。12行目は先ほど格納した10に3の剰余を変数$numに格納します。14行目は先ほど格納した1に2を加算して変数$numに格納します。16行目は先ほど格納した3を1で減算して変数$numに格納します。

 18行目は変数$strに文字列”メロンが“を格納しています。19行目で変数$strに格納されている”メロンが”に”食べたい。”を文字列結合して、再び変数$strに格納しました。

■ 比較演算子

 二つの値を比較します。

演算子 意味 使用例
== 2つのデータが等しいことを確認する $num1 == $num2
=== 2つのデータ、型ともに等しいことを確認する $num1 === $num2
!= 2つのデータが等しくないことを確認する $num1 != $num2
< 一方のデータが他方のデータより小さいことを確認する $num1 < $num2
> 一方のデータが他方のデータより大きいことを確認する $num1 > $num2
<= 一方のデータが他方のデータ以下であることを確認する $num1 <= $num2
>= 一方のデータが他方のデータ以上であることを確認する $num1 >= $num2

比較演算子

○ ファイル

 次のようにファイルを作成してください。

ファイルの種類 PHP ファイル
ファイル名 comparisontest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. <?php
  2. //変数の準備
  3. $num1 = 10;
  4. $num2 = 5;
  5. $strnum = '10';
  6. //文字化け対策
  7. header("Content-Type: text/html; charset=utf-8");
  8. //比較した結果を表示
  9. $ans = var_export($num1 == $strnum, true);
  10. print("等しい:$ans<br>");
  11. $ans = var_export($num1 === $strnum, true);
  12. print("等しい(値・型):$ans<br>");
  13. $ans = var_export($num1 != $num2, true);
  14. print("等しくない:$ans<br>");
  15. $ans = var_export($num1 <> $num2, true);
  16. print("等しくない:$ans<br>");
  17. $ans = var_export($num1 < $num2, true);
  18. print("より小さい:$ans<br>");
  19. $ans = var_export($num1 > $num2, true);
  20. print("より大きい:$ans<br>");
  21. $ans = var_export($num1 <= $num2, true);
  22. print("以下:$ans<br>");
  23. $ans = var_export($num1 >= $num2, true);
  24. print("以上:$ans<br>");

○ 実行結果

実行結果
実行結果

○ 解説

 11行目は変数$num1の値と変数$strnumの値が等しいかどうかを計算します。数値か数字にかかわらず、10なので等しいと計算され、trueが出力されます。var_export()は関数で、カッコの中に指定した式等を文字列として出力してくれます。今回は判定結果を文字列に変換する際に使用しています。変換した計算結果の文字列を変数$ansに格納して、次の行で表示しています。

 13行目は変数$num1の値と変数$strnumの値が数値としてもデータ型として等しいかどうかを計算します。数値としては等しいですが、データ型としては等しくないのでfalseが出力されます。15行目は変数$num1と変数$num2が等しくないかどうかを計算します。17行目も同様です。

 19行目では変数$num1の値が変数$num2の値がより小さいかどうかを判断します。小さくないのでfalseが出力されます。21行目は変数$num1の値が変数$num2の値より大きいかどうかを判断します。大きいのでtrueが出力されます。23行目は変数$num1の値が変数$num2の値以下かどうかを判断します。以下ではないのでfalseが出力されます。25行目は変数$num1の値が変数$num2の値以上かどうかを判断します。以上なのでtrueが出力されます。

■ 論理演算子

 論理演算をしてboolean値を算出します。

演算子 意味 使用例
and
&&
2つのブール値の論理積を求める $num1 > 1 and $num1 < 1
$num1 > 1 && $num1 < 1
or
||
2つのブール値の論理和を求める $num1 > 1 or $num1 < 1
$num1 > 1 || $num1 < 1
xor 2つのブール値の排他的論理和を求める $num1 == 10 xor $num2 == 5
! ブール値の論理否定を求める !($num1 < $num2)

論理演算子

○ ファイル

 次のようにファイルを作成してください。

ファイルの種類 PHP ファイル
ファイル名 logicaltest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. <?php
  2. //変数の準備
  3. $num1 = 10;
  4. $num2 = 5;
  5. //文字化け対策
  6. header("Content-Type: text/html; charset=utf-8");
  7. //論理演算の結果を表示
  8. $ans = var_export(!($num1 < $num2), true);
  9. print("否定:$ans<br>");
  10. $ans = var_export($num1 > 0 && $num1 < 10, true);
  11. print("論理積:$ans<br>");
  12. $ans = var_export($num1 > 0 || $num2 < 0, true);
  13. print("論理和:$ans<br>");
  14. $ans = var_export(($num1 == 10) xor ($num2 == 5), true);
  15. print("排他的論理和:$ans<br>");

○ 実行結果

実行結果
実行結果

○ 解説

 10行目は変数$num1と変数$num2を比較します。今回は「10 < 5」となるので条件としてはfalseです。しかし、「!」が付いているので否定として扱われ、「falseではない」つまりtrueと出力されます。

 12行目は2つの条件判断の結果をもとに判断します。今回は「$num1 > 0」で「true」、「$num2 < 10」でfalseとなります。この2つの判断の結果を「true && false」のようにさらに判断します。結果はfalseになります。論理積は次のような結果が出力されます。2つの条件がtrueの場合のみtrueとなります。

条件1 条件2 出力
false false false
false true false
true false false
true true true

条件1 && 条件2の出力

 14行目は2つの条件判断の結果をもとに判断します。今回は「$num1 > 0」でtrue、「$num2 < 0」でfalseとなります。この2つの判断の結果を「true || false」のようにさらに判断します。結果はtrueになります。論理和は次のような結果が出力されます。2つの条件のうち少なくともどちらか一方がtrueであればtrueになります。

条件1 条件2 出力
false false false
false true true
true false true
true true true

条件1 || 条件2の出力

 16行目は2つの条件判断の結果をもとに判断します。今回は「$num1 == 10」でtrue、「$num2 == 5」でtrueとなります。この2つの判断の結果を「true xor true」のようにさらに判断します。結果はfalseになります。排他的論理和は次のような結果が出力されます。2つの条件の結果が違えばtrueになります。

条件1 条件2 出力
false false false
false true true
true false true
true true false

条件1 xor 条件2の出力

■ 三項演算子

 論理演算をしてbool値を算出し、2つの値のいずれかを返します。

演算子 意味 使用例
?: 論理演算を処理し、値を返す ($num1 < 0) ? "-" : "+"

条件演算子

■ ビット演算子

 計算結果を代入します。

演算子 意味 使用例
& 両方にセットされているビットがセットされる $num1 & $num2
| とちらかにセットされているビットがセットされる $num1 | $num2
^ どちらかにセットされており、両方にセットされていないビットがセットされる $num1 ^ $num2
~ セットされているビットはセットせず、セットされていないビットはセットする ~$num
<< セットされているビット・パターンを左にシフトする $num << 2
>> セットされているビット・パターンを右にセットする $num >> 2

ビット演算子

○ ファイル

 次のようにファイルを作成してください。

ファイルの種類 PHP ファイル
ファイル名 bittest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. <?php
  2. //変数の準備
  3. $num1 = 10;
  4. $num2 = 5;
  5. $num3 = 7;
  6. //文字化け対策
  7. header("Content-Type: text/html; charset=utf-8");
  8. //ビット演算の結果を表示
  9. $ans = $num1 & $num2;
  10. print("ビット積:$ans<br>");
  11. $ans = $num1 | $num2;
  12. print("ビット和:$ans<br>");
  13. $ans = ~$num1;
  14. print("否定:$ans<br>");
  15. $ans = $num1 ^ $num3;
  16. print("排他的論理和:$ans<br>");
  17. $ans = $num2 << 2;
  18. print("左シフト:$ans<br>");
  19. $ans = $num1 >> 2;
  20. print("左シフト:$ans<br>");

○ 実行結果

実行結果
実行結果

○ 解説(整数値を8bitとして解説します)

 11行目は変数$num1と変数$num2のビット積を計算します。「00001010」と「00000101」のビット列を論理積演算するため、「00000000」となり、10進数で0となります。13行目は変数$num1と変数$num2のビット和を計算します。「00001010」と「00000101」のビット列を論理和演算するため、「00001111」となり、10進数で15となります。

 15行目は変数$num1の否定を計算します。「00001010」のビット列を論理否定演算するため、「11110101」となり、10進数で-11となります。 17行目は変数$num1と変数$num3の排他的論理和を計算します。「00001010」と「00000111」のビット列を排他的論理和演算するため、「00001101」となり、10進数で13となります。

 19行目は変数$num2を左にシフトします。「00000101」のビット列を左に2ビット分シフトするため、「00010100」となり、10進数で20となります。左にシフトするたびに10進数での2倍の計算をします。 21行目は変数$num1を右にシフトします。「00001010」のビット列を右に2ビット分シフトするため、「00000010」となり、10進数で2となります。右にシフトするたびに10進数での2で割る計算をします。

■ 文字列演算子

 文字列同士を結合します。数値と結合する場合も文字列結合になります。

演算子 意味 使用例
. 文字列を結合する 'abc' . 'def'

文字列演算子

○ ファイル

 次のようにファイルを作成してください。

ファイルの種類 PHP ファイル
ファイル名 stringoperatortest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. <?php
  2. //変数の準備
  3. $fruits = 'りんご';
  4. //文字化け対策
  5. header("Content-Type: text/html; charset=utf-8");
  6. //文字列を結合して表示
  7. print("わたしは、" . $fruits . 'がすきです。');

○ 実行結果

実行結果
実行結果

○ 解説

 9行目は文字列「わたしは、」と変数$fruitsを結合することで、「わたしは、りんご」となります。さらにその文字列と、「がすきです。」を結合し、「わたしは、りんごがすきです。」と表示されます。

前へ   次へ