Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. PHP入門編 - 基本的な演算子と文字連結について

基本的な演算子と文字連結について

(´-`).。oO(わたくし、東京出身の東京育ちなもので完全なる都会っ子(おっさん)なのでございますが...)

(´-`).。oO(幼少の頃、川の色は『緑』、海の色は『黒』と思い込んでおりまして...)

(´-`).。oO(とあるとき、筆の進むがまま川の色を『緑』、海の色を『黒』で描いた絵を提出したところ...)

(´-`).。oO(「一度、診察を受けたほうが良い」と先生に諭され、病院で精神鑑定的なものを受けたことがあります...)

(´-`).。oO(あの時のおどろおどろしい雰囲気は未だにトラウマです...)

というわけでみなさまどうも。いかがお過ごしでしょうか。

最近は下水処理が優秀になってきたせいか東京の川や海が透明に近づいてきましたね。でも神田川は相変わらず『緑』というか『黒』って感じでございます。でも東京で育っていると汚い川も何だか味があるように感じてしまい、逆に綺麗な川はアウェイ感がすごいというか、自分が住む場所ではないって感じが凄いです、はい。

(´-`).。oO(汚い川、汚い海、淀んだ空気、1兆ドルを超える桁違いのGDPから生まれる沢山のお仕事、東京は最高でございますね...)

さて、ではPHPに話を戻しまして、前回はインクルード処理をやりましたね。PHPの強力さがちょっとでも伝わっていれば幸いです。今回は基本的な『演算子』(えんざんし)とかその勢いで『文字連結』とかをやっていきましょう。

まず『演算子』ってなんなのか、ということですが一言で言えば特殊な効果を持つ記号とか文字のことです。ちょっと数学を思い出してみましょう。「1 + 2」とかで使う『+』記号ってありますよね。ああいうのが『演算子』って呼ばれます。

PHPでの『演算子』は何種類かあり、今回は『算術演算子』、『文字列演算子』、『代入演算子』を紹介していきます。これらの名前は参考書にでてくるくらいなので特に覚える必要はないです。『演算子』って言葉だけ忘れないようにしておきましょう。

では『算術演算子』についてです。これは加算(足し算)、減算(引き算)、乗算(掛け算)、除算(割り算)を行うときに使う『演算子』です。つまり、算数(四則演算)ですね。

PHPでの加算は『+』、減算は『-』、乗算は『*』、除算は『/』、そして剰余(割り算した時の余り)は『%』を使用します。これらはほぼ全てのプログラミング言語共通ですので覚えておきましょう。PCの電卓ソフトなんかでも同じような感じになっているはずです。

演算の対象となる値や数値や変数などの事を『オペランド』(被演算子)といいます。

例えば「1 + 2」の場合は数値『1』と数値『2』が『オペランド』になります

難しめの参考書などで良く出てきますので覚えておきましょう。

使い方はとっても簡単です。単純に『算術演算子』を使って処理をさせたい演算を書けばOKです。

<?php
echo 1 + 2; // 『1 + 2』の演算結果を出力します。
echo 3 - 2; // 『3 - 2』の演算結果を出力します。
echo 3 * 2; // 『3 × 2』の演算結果を出力します。
echo 6 / 2; // 『6 ÷ 2』の演算結果を出力します。
echo 6 % 5; // 『6 ÷ 5』の余りを出力します。

$test = 1 + 2; // 『1 + 2』の演算結果、数値『3』を変数『test』に代入します。

PHPでは自動で型変換が行われる場合があります。

例えば文字列『1』と数値の『2』を加算、つまり「'1' + 2」とした場合でもエラーにならず、文字列『1』が数値『1』に自動変換され、数値の『3』が演算結果として返ってきます。

便利な気がしてしまうかもしれませんが、これはプログラマーの見えないところで型変換が行われているということなので思わぬミスの原因になる可能性があります。ご注意ください。

<?php
echo '1' + 2; // 文字列『1』が数値『1』に自動変換されるので数値『3』が出力されます。
echo true + 0; // 真偽値『true』は数値『1』に変換されるため『1 + 0』で数値『1』が出力されます。
echo false + 0; // 真偽値『false』は数値『0』に変換されるため『0 + 0』で数値『0』が出力されます。

そしてプログラミングならではの小技、『インクリメント』を紹介します。これは変数の値を『1』増やすというものです。記述してみますね。

<?php
$x = 0;
++$x; // これは『$x = $x + 1』と記述したことと同じです。

echo $x; // 『1』が出力されます。

上記のように『++』と記述するとその変数に『1』を追加することができます。プログラミングでは『1』を足すという処理を行う事が非常に多く、この『インクリメント』は使用頻度がかなり高いです。

そしてその逆のパターンで、『--』と記述すると変数から『1』を引くことができます。こちらは『デクリメント』と呼ばれます。

<?php
$x = 1;
--$x; // これは『$x = $x - 1』と記述したことと同じです。

echo $x; // 『0』が出力されます。

『インクリメント』と『デクリメント』はほぼ全てのプログラム言語に実装されている構文なのでセットで覚えておくと良いです。

PHPでのインクリメントとデクリメントは前置で記述するパターンと後置で記述するパターンがあります。以下のような感じですね。以下はインクリメントを記述していますがデクリメントも同じです。

<?php
$a = 0;
$b = 0;

++$a;
$b++;
 
var_dump($a); // これは『1』です。
var_dump($b); // これは『1』です。

これは変数『a』,『b』共に『1』が加算されどっちも『1』と出力されます。このような単独で行う場合は特に変わったことはありません。

しかし代入式などを並行して演算させる場合は前置と後置で演算が変わります。以下の例を見て下さい。

<?php
$a = 0;
$b = 0;

$c = ++$a;
$d = $b++;

var_dump($a); // これは『1』です。
var_dump($b); // これは『1』です。
var_dump($c); // これは『1』です。
var_dump($d); // これは『0』です。

最初に変数『a』,『b』に『0』を代入して前置と後置のインクリメントを行います。そのあと変数『c』,『d』にその値を代入していますね。

さて変数『a』,『b』は『1』となるのですが、問題は変数『c』,『d』です。もう答えがコメントアウトで書いてありますが変数『c』は『1』、変数『d』は『0』となります。

なぜこんな事になるのかというと後置でインクリメントを行った場合はまず最初に値を返し、その後に『1』が加算されるという結果になるからだったりします。

この場合ですと先に変数『b』の値が変数『d』に代入され、その後に変数『b』に『1』が加算されるという感じです。これらは以下のように記述したことと同じです。

<?php
$a = 0;
$b = 0;

// これは『$c = ++$a;』のパターン
$a = $a + 1;
$c = $a;

// これは『$d = $b++;』のパターン
$d = $b;
$b = $b + 1;

var_dump($a); // これは『1』です。
var_dump($b); // これは『1』です。
var_dump($c); // これは『1』です。
var_dump($d); // これは『0』です。

というわけでと長々と書きましたがややこしいですよね。なので基本的にインクリメント、デクリメント共に前置パターンが正解と思って頂ければ多分問題ありません。

多くの皆さんのイメージ通りの動きなのは前置パターンの方で間違いないです。さらに後置パターンでは見えない裏側で自身を返す処理が行われるせいで、処理も前置パターンの方が若干早かったりします。

ですのでみなさんも迷ったら前置パターンのみ使用すれば問題ありません。

ちなみに別に後置パターンは全て間違い、というわけでは全くないので使いたい状況であるならば使ってしまって問題ありません。状況に合わせて使い分けていきましょう。

ウェブサイトの構築において文字列は非常に重要です。

ですのでウェブサイトの組み込みに特化している非常に男らしい言語であるPHP様では文字列操作が非常に充実しており、なんと文字列を『インクリメント』したり『デクリメント』したりすることができちゃったりします。

<?php
$txt = 'a';
$txt++; // 文字列『a』をインクリメントして文字列『b』にします。

echo $txt; // 『b』と出力されます。

アルファベット『a』が次のアルファベット『b』になりましたね。ちなみに『z』を『インクリメント』すると一桁増えて『aa』になります。『az』にインクリメントすれば『ba』となります。

あまり使われる機会はないかもしれませんが、この実装方法も一応覚えておくと良いかもしれません。

続いて『文字列演算子』です。PHPでは『.』(ドット)を使うことで文字列を連結させることができます。以下のような感じですね。

<?php
echo 'Hello' . ' world'; // 文字列『Hello world』が出力されます。

文字列以外のものを文字列連結した場合は文字列に自動変換されて連結されます。

<?php
$num = 2015; // 変数『num』に数値『2015』を代入します。

echo 'This year is ' . $num . '.'; // 文字列『This year is 2015.』が出力されます。

注意点として数値の整数を変数などに代入せず、直接連結させたい場合は整数の隣に半角スペースが必要になっちゃいます。『3.14』とかの小数点以下の数値を表すときにも『.』って使いますよね。整数の横に半角スペースなしで『.』を置くと「小数点以下の数値を記述しているんだな」とPHPちゃんが判断してしまい、記述によってはエラーとなります。

<?php
echo 'ある時期の円周率は3.14ではなく' . 3 .'でした。'; // これは動きます。

echo 'ある時期の円周率は3.14ではなく'.3.'でした。'; // これは『.』の横に半角スペースがないためエラーです。

なので『.』を使って文字連結を行う場合には『.』の左右に半角スペースを置いてあげると良いかもしれません。

あと他の言語では『+』で文字列連結する感じが多いのですがPHPでは『.』です。間違えないように注意してください。

続いて『代入演算子』になります。こちらはこれまでも何度か登場している変数に何かを代入させる際に使ってた『=』です。

<?php
$txt = 'Hello world'; // 文字列『Hello world』を変数『txt』に代入します。

『代入演算子』系で紹介していなかった『複合演算子』がありますのでちょっと紹介します。『+=』を使用すると自身の値と追加したい値を加算したものを自分自身に代入できます。言葉にすると良く分からない感じですね。以下のサンプルを見てみましょう。

<?php
$num = 1; // 変数『num』に数値『1』を代入します。
$num += 2; // 『$num = $num + 2;』と記述していることと同じです。

echo $num; // 数値『3』が出力されます。

ちょっと前の記事で自分自身を演算に使ってその結果を自分自身に代入する、っていうプログラミングならではのトリッキーな記法がありましたよね。こちらはあの省略版って感じです。イメージとしては自分自身にさらに値を加算する、といった感じですかね。

ちょっと慣れないと難しいかもしれませんが、この記法は他のプログラム言語でも存在しているので使用される機会はかなり多く、必ず覚える必要があります。

『+=』以外にも『-=』、『*=』、『/=』、『%=』、『.=』が用意されています。

<?php
$num1 = 10; // 変数『num1』に数値『10』を代入します。
$num1 += 2; // 『$num = $num + 2;』と記述していることと同じです。
echo $num1; // 数値『12』が出力されます。

$num2 = 10; // 変数『num2』に数値『10』を代入します。
$num2 -= 2; // 『$num2 = $num2 - 2;』と記述していることと同じです。
echo $num2; // 数値『8』が出力されます。

$num3 = 10; // 変数『num3』に数値『10』を代入します。
$num3 *= 2; // 『$num3 = $num3 * 2;』と記述していることと同じです。
echo $num3; // 数値『20』が出力されます。

$num4 = 10; // 変数『num4』に数値『10』を代入します。
$num4 /= 2; // 『$num4 = $num4 / 2;』と記述していることと同じです。
echo $num4; // 数値『5』が出力されます。

$num5 = 10; // 変数『num5』に数値『10』を代入します。
$num5 %= 3; // 『$num5 = $num5 % 3;』と記述していることと同じです。
echo $num5; // 数値『1』が出力されます。

$txt = 'Hello'; // 変数『txt』に文字列『Hello』を代入します。
$txt .= ' world'; // 『$txt = $txt . ' world';』と記述していることと同じです。
echo $txt; // 文字列『Hello world』が出力されます。

他の『複合演算子』もあったりするのですが、PHPの言語の特性上よく使用されるのは上記の6つとなります。なのでこれらの『複合演算子』だけしっかり覚えておくようにしましょう。

というわけで基本的な『演算子』とか『文字連結のやり方』とかは以上になります。続いての記事では変数に次いで初心者の壁になりがちな『配列』についてやっていきたいと思います。

ではではこの辺で。またお会いしましょう。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。