PHPの演算子と文
カテゴリ:PHP編
本記事ではPHPの主な演算子と文(分岐文・ループ文)について解説します。演算子
PHPの演算子には算術演算子や文字列連結演算子、代入演算子、ビット演算子、比較演算子などいくつかの演算子の種類があります。それぞれ順番に見ていきましょう。
代入演算子
代入演算子はイコール記号(=)を用いて、右辺の値を左辺の変数に代入する際に使用します。
例)
//$str変数に文字列を代入する
$str = "代入演算子";
算術演算子
算術演算子の種類には足し算(加算)、引き算(減算)、掛け算(積算)、割り算(除算)、割った余り(剰余)、累乗の6つがあります。
加算
加算にはプラス記号(+)を使用します。
$i = 1 + 2;
減算
減算にはマイナス記号(-)を使用します。
$i = 3 - 2;
積算
積算にはアスタリスク記号(*)記号を使用します。
$i = 5 * 2;
除算
除算にはスラッシュ記号(/)を使用します。
$i = 255 / 5;
剰余
剰余にはパーセント記号(%)記号を使用します。 以下の式は365を7で割った余りを出力します。
$i = 365 % 7;
累乗
累乗にはダブルアスタリスク記号(**)記号を使用します。 以下は10の5乗を出力します。
$i = 10 ** 5;
文字列連結演算子
文字列の連結にはドット(.)記号を使用します。
例)
$str = "Hello" . "World";
算術演算子と文字列連結演算子を組み合わせた場合の例)
//1年が何週間何日かを求める
echo "1年は" . (floor(365 / 7)) . "週間と" . (365 % 7) . "日です。";
//「1年は52週間と1日です。」が出力されます。
ビット演算子
ビット演算子は2進数値の計算に用いられ、否定演算子、論理積演算子、論理和演算子、排他的論理和演算、左シフト演算子、右シフト演算子の6つがあります。
否定(NOT)演算子
否定演算子はビットを反転させる(1を0に、0を1に)演算子となりチルダ記号(~)を使用します。
論理積(AND)演算子
論理積演算子はどちらか一方のビットが0であれば0を出力する(逆に言えば両方のビットが1の場合のみ1を出力)演算子となりアンパサンド記号(&)を使用します。一般的にマスク(ビットマスク)に使用されます。
echo 0b11111111 & 0b00001111;
//「15」(00001111)が出力されます。
論理和(OR) 演算子
論理和演算子はどちらか一方のビットが1であれば1を出力する(逆に言えば両方のビットが0の場合のみ0を出力)演算子となりパイプ記号(|)を使用します。一般的にフラグ(ビットフラグ)に使用されます。
echo 0b11000000 | 0b00001111;
//「207」(11001111)が出力されます。
排他的論理和(XOR)演算子
排他的論理和演算子は両方のビット値が同じであれば0を出力する演算子となりキャレット記号(^)を使用します。
echo 0b11001111 ^ 0b00001111;
//「192」(11000000)が出力されます。
左シフト演算子
左シフト演算子は指定した値だけビットを左に移動させる演算子となり << 記号を使用します。溢れたビットは抹消されます。 ビット演算では左に1回シフトするごとに値は常に2倍になります。
echo 0b000011001100 << 3;
//「1632」(011001100000)が出力されます。
右シフト演算子
右シフト演算子は指定した値だけビットを右に移動させる演算子となり >> 記号を使用します。空ビットは符号ビットで初期化されます。 ビット演算では右に1回シフトするごとに値は半分になります。
echo 0b000011001100 >> 3;
//「25」(000000011001)が出力されます。
比較演算子
比較演算子は条件式において2つの値を比較する場合に使用する演算子となります。条件に一致すればtrue、条件に一致しなければfalseが返されます。
等しいかの比較
値が等しいかの判定には == 記号を使用します。
値が等しく且つ、型も等しいかの判定には === 記号を使用します。
echo 123 == "123" ? "true" : "false";
//「true」が出力されます。型は比較しないためです。
echo 123 === "123" ? "true" : "false";
//「false」が出力されます。型も比較するためです。
大きさの比較
左辺値が大きいかの判定には、> 記号、以上であるかの判定には >= 記号を使用します。
左辺値が小さいかの判定には、< 記号、以下であるかの判定には <= 記号を使用します。
echo 123 > 456 ? "true" : "false";
//「false」が出力されます。
echo 123 >= 123 ? "true" : "false";
//「true」が出力されます。
等しくないかの比較
等しくない(否定)を表すには各演算子の先頭に ! 記号を付与します。
値が等しくないかは != 記号、値または型が等しくないかは !== 記号を使用します。
echo 123 != "123" ? "true" : "false";
//「false」が出力されます。値は等しいためです。
echo 123 !== "123" ? "true" : "false";
//「true」が出力されます。値は等しいですが型は等しくないためです。
分岐文
分岐文には、if文とswitch文があります。if文
if文では、式がtrueの場合に、文を実行します。
構文:
if (式) 文
式がfalseの場合に、実行させたい文はelse文に記述します。
構文:
if (式)
文
else 文
Note文が複数行となる場合はブロック(文を {} で囲む)を用います。
例)if (123 === "123") {
echo "値は等しいです";
} else {
echo "値は等しくありません";
}
//「値は等しくありません」が出力されます。
switch文
switch文は、式を比較し、値が一致するcase文を実行します。どのcase文の値にも一致しなかった場合はdefault文が実行されます。
構文:
switch (式) {
case '値':
文
break;
case '値':
文
break;
case '値':
文
break;
default:
文
}
注意breakキーワードがない場合、case文の値に一致し文を実行後も、引き続き下位のcase文を比較します。
例)
$str = "Grape";
switch ($str) {
case 'Apple':
echo "りんご";
break;
case 'Orange':
echo "みかん";
break;
case 'Grape':
echo "ぶどう";
break;
default:
echo "どれにも一致しませんでした";
}
//「ぶどう」が出力されます。
ループ文
ループ文には、while文、for文、foreach文があります。
while文
while文は式がtrueの間は文を繰り返し実行します。
構文:
while (式) 文
例)
$i = 0;
while ($i < 5) {
echo $i;
$i++;
}
//「01234」が出力されます。
for文
for文も条件がtrueの間は文を繰り返し実行しますが、初期値、増分が指定できます。 つまり上記のwhile文で式の外で定義していた初期値($i = 0;)と増分($i++;)をfor文の式内に定義できます。
構文:
for (初期値; 条件; 増分) { 文; }
for ($i = 0; $i < 5; $i++) {
echo $i;
}
//「01234」が出力されます。上記while文と同じ動作となる。
foreach文
foreach文は配列から要素値を順番に処理するための配列専用のループ文となります。
構文:
foreach ($array as $current) { 文; }
例)
$arr = array('りんご', 'みかん', 'ぶどう');
foreach ($arr as $val) {
echo $val . " ";
}
//「りんご みかん ぶどう」が出力されます。
連想配列の場合は、以下の構文を用いて要素のキーと値の両方を取り出せます。
構文:
foreach ($array as $key => $value) { 文; }
例)
$arr = array('りんご'=>'5', 'みかん'=>'8', 'ぶどう'=>'5');
foreach ($arr as $key => $val) {
echo $key . "は" . $val . "個 ";
}
//「りんごは5個 みかんは8個 ぶどうは5個」が出力されます。
以上、PHPの演算子と文の解説でした。
公開日時:2020年05月31日 09:59:00