演算子

普通の専門書では「関数の次は構文〜」となるですが、ここでは演算子を先にご説明します。理由は構文を記述していく上で、演算子は欠かせない存在だからです。
それでは演算子とは一体何なのでしょうか?実は今までご説明してきた中に演算子は存在していたのです。「print = "123";」の「=」の部分が演算子(代入演算子)です。「=」が演算子という事は、「+」「-」「*」なども演算子(算術演算子)という事になります。関数にもいろいろな動作をするものがあるように、演算子にも多種多様なものが用意されています。演算子を分類別に表にまとめたのでご覧下さい。

算術演算子

算術演算子は、数値の計算をする演算子です。「A%B」の場合は、数値「A」と数値「B」を整数にしてから割り算を行い、余りの数値を出します。「A**B」は「AのB乗」という意味です。通常、数字の右上に小さく数字を書くのと同じです。「2**2」は「2」の2乗、つまり2×2となります。「2**3」は2×2×2です。貴方のパソコンのキーボード右側(NumLockの隣付近)に「/」「*」「-」「+」があります。算術演算子はこれらと同等の意味となります。

演算子 意 味
A+B A足すB
A-B A引くB
A*B AかけるB
A/B A割るB
A%B A割るBの余り
A**B AのB乗

文字列連結演算子

文字列連結演算子は、文字列と文字をくっつける演算子です。まずは文字列連結演算子をご説明します。
下記「あいうえお」と「かきくけこ」の間にある「.(ピリオド)」が文字列連結演算子です。この結果は「あいうえおかきくけこ」となります。文字列を変数に置き換える時に使われます。

"あいうえお"."かきくけこ" $renketu = "あいうえお";
$renketu = $renketu."かきくけこ";
両方とも同じ結果:あいうえおかきくけこ

これらの文字列は「”」(ダブルクォート文字列)で囲まれているので、変数の中身と文字列を連結させる事が出来ます。ちなみに「’」(シングルクォート文字列)で囲んだ場合、変数名$renketuがそのままの形で出力($renketuかきくけこ)となってしまうのでご注意下さい。

文字列繰り返し演算子

文字列繰り返し演算子は、指定した数値のぶんだけ文字を繰り返す演算子です。

"あいうえお"x5
結果:あいうえおあいうえおあいうえおあいうえおあいうえお

上記はダブルクォートで囲まれているので、「ラーメンを5回繰り返す」という意味になります。「x5」の「x」は、「かける」ではなく小文字のエックスです。この「x(エックス)」は文字列のみ使用することが出来ます。

"あいうえお"x(3+5)
結果:あいうえおあいうえおあいうえおあいうえお・・・・・・8回

これは「あいうえお」を「8回(3+5=8となるので)」繰り返すという意味です。数字をカッコ「()」で囲まないと「x3」と処理してしまいます。ご注意下さい。

代入演算子

「+」や「-」は算術演算子でしたが、「=」は代入代入演算子となります。「代入」という言葉の通り、変数などに値(要素)を代入する時に使います。

表:1
$box_2=3;
$box_1=$box_2+1;
結果:$box_1内には「4」が代入されます。
表:2
$box_1=2;
$box_1=$box_1+1;
結果:$box_1内には「2」が代入されます。

表:2では、$box_1の値「2」が指定され「1」足された結果が$box_1に代入されています。これを二項代入演算子を使用することにより、省略する事もできます。

代入演算子一覧

二項代入演算子使用 普通に演算子使用 意味
$a+=b $a=$a+b $a足すbを$aに指定し直す
$a-=b $a=$a-b $a引くbを$aに指定し直す
$a*=b $a=$a*b $aかけるbを$aに指定し直す
$a/=b $a=$a/b $a割るbを$aに指定し直す
$a%=b $a=$a%b $a割るbの余りを$aに指定し直す
$a**=b $a=$a**b $aのb乗を$aに指定し直す
$a.=b $a=$a."b" $aにbを連結したものを$aに指定し直す
※上記の表を利用すると、文を短くまとめる事が出来ます。

$box=$box+1;を二項代入演算子で省略すると・・・ $box+=1;となります。随分スッキリしましたね。


インクリメント演算子/デクリメント演算子

スカラー変数に「1」を足す時に使われるのがインクリメント演算子です。アクセスカウンタや掲示板の投稿者数を処理する時に使用されます。ちなみに下記表の4つは同じ意味となります。そして、「1」を引く時に使われるのがデクリメント演算子です。「++」「--」を先に記述しても後に記述しても結果は同じです。※これらはスカラー変数にしか使えません。

「+」(半角)を2つ続けて記述します
インクリメント演算子 デクリメント演算子
++$box; --$box;
$box++; $box--;
$box=$box+1; $box=$box-1;
$box+=1; $box-=1;
※こちらの演算子は「1を足す」「1を引く」時は以外使用しません。

インクリメント演算子の違い
$box_2の値 $box_1の値
$box_2=++$box_1; $box_1に1足した値 $box_2に1を足した値
$box_2=$box_1++; 最初指定した$box_1の値 $box_2に1を足した値

比較演算子

比較演算子は、2つの数値や文字列を比較する時に使用します。主に構文内で使われる事が多いので必ず覚えましょう。
例えば「もし数値が5なら、以下の処理を行う。5以外の数値の場合は、処理を行わない」といったプログラム(構文)に使用します。この「数値が5なら・・・・」の部分が比較演算子です。比較演算子には数値を扱うものと文字列を扱うものの2種類があります。

「+」(半角)を2つ続けて記述します
意 味 数値比較演算子 文字列比較演算子
AとBが等しい A == B A eq B
AとBは等しくない A != B A ne B
AはBより大きい A > B A gt B
AはBより小さい A < B A lt B
AはBより大きいか等しい A >= B A ge B
AはBよりも小さいか等しくない A <= B A le B

「>」「<」は算数の時間に出てきた不等号と同じ意味です。しかし、文字列に対して「等しい」「等しくない」は少々理解に苦しみますね。じつは、文字列の大小は文字コードの数字の大きさ・小ささで比較されるのです。

??それでは文字コードとは一体なのでしょうか??

例えば〜「5」と「30」を数値として比較すると、誰もが「30が大きい!」と言うでしょう。しかし、文字コード(文字列)として比較すると、「5」が大きい事になってしまうのです。理由は、「30」は「3」と「0」という文字2つに分けられ、最初の文字「3」と「5」が比較対照となります。この場合「3」の文字コードよりも「5」の文字コードが大きいので、「結果:5が大きい!」という事になります。※用途に合わせて演算子を使い分けて下さい。

論理積演算子/論理和演算子

2つの式の間に書く演算子です。とりあえず使い方を見てみましょう。

$box_1 < 13 && $box_2 < 13

上記の「$box_1 < 13」と「$box_2 < 13」の間にある「&&」が論理積演算子です。「$box_1」に「5」、「$box_2」に「10」という数値を代入します。論理積演算子の処理順番は、「&&」の左側「$box_1 < 13」から評価されます。「$box_1」は「5」なので、「13」よりも小さい数値と評価されます。これは「$box_1 < 13」が「正しい」となるので、左側の式は「真」となります。
次に右側の処理をします。処理方法は右側と同じです。「10」より「13」が大きいので「真」となります。結果、両方の式は「真」なので、全体が「真」として評価されます。

では、どちらかが「偽」の場合はどうなるのでしょうか?もし最初(左側)の式が「偽」と評価されてしまうと、全体は「偽」と評価されてしまいます。又、最初(左側)が「真」と評価されても次(右側)が「偽」ならば、全体が「偽」と評価されてしまうのです。

論理和演算子は、「&&」の代わりに「||」(パイプが2つ)を記述します。処理方法は上記(論理積演算子)と同じですが、評価内容が異なります。下記表をご覧下さい。

※論理積演算子は、両方が正しい場合のみ「真」と評価されます。
※論理和演算子は、どちらかが正しければ「真」と評価されます。

なお、「&&」を「and」、「||」を「or」と書くことも可能です。意味としては、「and」「or」の方がわかりやすいですね。