式と演算子
式(expression)
PHPの式の多くは、
を組み合わせてつくられています。
式の評価
- 式の計算が、式の評価にあたります
- 評価された結果を「式の値」と呼びます
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>複数の変数</title> </head> <body> <?php $product = '消しゴム'; $num = 10; print $product . 'を' . $num . '個販売しています。' . "\n"; ?> </body> </html>
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>変数を演算する</title> <style> table { width: 300px; border-collapse: collapse; } th { background-color: #CCC; } th,td { padding: 6px; text-align: center; } </style> </head> <body> <?php $product = '消しゴム'; $num = 10; $price = 50; $total = $price * $num; //$numと$priceの値をかけ合わせたものを$totalに代入します $total = $total - 100; //$totalから100減じたものを$totalに代入します ?> <table border="1"> <tr><th>内容</th><th>金額</th></tr> <?php print '<tr><td>品名</td><td>' . $product . '</td></tr>' . "\n"; print '<tr><td>単価</td><td>' . $price . '円</td></tr>' . "\n"; print '<tr><td>個数</td><td>' . $num . '個</td></tr>' . "\n"; print '<tr><td>計</td><td>' . $total . '円(但100円引)</td></tr>' . "\n"; ?> </table> </body> </html>
《実行結果》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>変数を計算する</title> </head> <body> <?php $x = 10; $y = 5; print $x . '+' . $y . '=' . ($x + $y) . '<br>'; print $x . '×' . $y . '=' . ($x * $y) . "\n"; ?> </body> </html>
《実行結果》
演算子
- 簡単な計算をしたり長い文字列をつなぎ合わせる
文字列の中に数値を入れて表示
- 300円の表品を10個購入して500円割引される場合
- 「300 x 10 - 500」円
<?php print '合計金額は、300 x 10 - 500 円です。'; ?>
四則演算の部分は、プログラミングとして記述するように変更します。
算術演算子で「四則演算」や「変数の結合」
<?php $tanka = 300; $suryo = 10; $waribiki = 500; $total = $tanka * $suryo - $waribiki; print $total; ?>
文字列結合演算子
- 「. ドット」で文字列を連結する(ドットシンタックス)
<?php $tanka = 300; $suryo = 10; $waribiki = 500; $total = $tanka * $suryo - $waribiki; print '合計金額は、' . $total . '円です。'; ?>
結合代入演算子
- 変数の後に新たな文字列を継ぎ足しできる演算子
<?php $temp = '山本さん、'; $temp = $temp . 'こんにちは。'; $temp = $temp . '今日は月曜日です。'; print $temp; ?>
「結合代入演算子」を使って書き換えます。
<?php $temp = '山本さん、'; $temp .= 'こんにちは。'; $temp .= '今日は月曜日です。'; print $temp; ?>
演算子の種類
記号 | 名前 | 記号 | 名前 |
---|---|---|---|
+ | 加算 | == | 等価 |
- | 減算 | === | 等価 |
* | 乗算 | != | 非等価 |
/ | 除算 | <> | 非等価 |
% | 剰余 | !=== | 非等価 |
+ | 単項+ | ! | 論理否定 |
- | 単項- | && | 論理積 |
~ | 補数 | || | 論理和 |
& | ビット論理積 | and | 論理積 |
| | ビット論理和 | or | 論理和 |
^ | ビット排他的論理和 | xor | 排他的論理和 |
= | 代入 | , | 順次 |
<< | 左シフト | () | 関数呼び出し |
>> | 右シフト | () | キャスト |
++ | インクリメント | [] | 配列添え字 |
-- | デクリメント | @ | エラー制御 |
> | より大きい | -> | メンバ参照 |
>= | 以上 | ? : | 条件 |
< | 未満 | new | オブジェクト作成 |
<= | 以下 | instanceof | オブジェクトのクラス |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>いろいろな演算子を利用する</title> <style> table { width: 300px; border-collapse: collapse; } th { background-color: #CCC; } th,td { padding: 6px; text-align: center; } </style> </head> <body> <?php $num1 = 10; $num2 = 5; $num3 = $num1+$num2; $num4 = $num1-$num2; $num5 = $num1*$num2; $num6 = $num1/$num2; $num7 = $num1%$num2; ?> <table border="2"> <tr><th>項目</th><th>結果</th></tr> <?php print '<tr><td>$num1</td><td>' . $num1 . '</td></tr>' . "\n"; print '<tr><td>$num2</td><td>' . $num2 . '</td></tr>' . "\n"; print '<tr><td>$num1 + $num2</td><td>' . $num3 . '</td></tr>' . "\n"; print '<tr><td>$num1 - $num2</td><td>' . $num4 . '</td></tr>' . "\n"; print '<tr><td>$num1 * $num2</td><td>' . $num5 . '</td></tr>' . "\n"; print '<tr><td>$num1 / $num2</td><td>' . $num6 . '</td></tr>' . "\n"; print '<tr><td>$num1 % $num2</td><td>' . $num7 . '</td></tr>' . "\n"; ?> </table> </body> </html>
《実行結果》
インクリメント・デクリメント
- 「++」演算子は、インクリメント演算子(increment operator)と呼ばれます。
- 「--」演算子は、デクリメント演算子(decrement operator)と呼ばれます。
- 何らかの処理を1つずつ値を増やしたり減らしたりの繰り返しを1回ずつカウントするために用いられます。
変数$aの値を1増やします
$a++;
値を1増やす演算は、このようにも書けます
$a = $a + 1;
変数$aの値を1減らします
$a--;
値を1減らす演算は、このようにも書けます
$a = $a - 1;
文字列の連結
- 「ドット」は、文字列連結演算子と呼びます。
- 変数を連結するだけの場合は、{ }は不要です。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>文字列の連結</title> </head> <body> <table border="1"> <tr><th>文字列</th></tr> <?php $msg1 = 'こんにちは'; $msg2 = 'さようなら'; $msg3 = 'またあした'; print '<tr><td>' . $msg1 . $msg2 . '</td></tr>' . "\n"; print '<tr><td>' . $msg2 . $msg3 . '</td></tr>' . "\n"; print '<tr><td>' . $msg1 . $msg3 . '</td></tr>' . "\n"; ?> </table> </body> </html>
演算子の優先順位
- 通常の四則演算と同じです。
- カッコ内が先に評価されます。
左結合(left associative)
($a + $b) + 1
右結合(right associative)
$a = ($b = 1)
ビットとバイト
1ビット
- コンピュータは、0と1を使った2進数で数を認識しています。
- 2進数の値の「1桁分」は、コンピュータの数値であらわすときの単位で「ビット(bit)」と呼ばれています。