代入演算子
自分自身に値を足す書き方
まず、変数$numの値に3を足した値を新しい$numの値にする、つまり変数$num自身に値を足す処理をPHPプログラムを書いてみましょう。
どのように書くと思いますか?
もしかしたら、次のように書くと思った人もいるかもしれません。
$num2 = $num + 3; $num = $num2;
変数$numに3を足した値を一旦変数$num2に代入し、その$num2を$numに代入することで、新しい$numの値にする。
・・・まぁ処理としては問題ありませんが、そんなにまわりくどい書き方をする必要はありません。
次のように書くと1行で書くことができます。
$num = $num + 3;
まず右辺の「 $num + 3 」で$numに3を足してから、左辺の同じ名前の変数$numに代入するという書き方です。
短縮した書き方
さらに書き方を洗練させましょう。
$num = $num + 3;
の書き方ですが、同じ変数$numを2回書くのは、ちょっとスマートじゃないですよね?(笑)
そこで、PHPにはこの書き方を次のように短縮して書く方法があります。
$num += 3;
演算子「+=」を使うと、$numを2回書く必要がなくなります♪
この演算子「 += 」のことを「代入演算子」と呼びます。
代入演算子の一覧
足し算「+=」と同様に、引き算「-=」、掛け算「*=」、割り算「/=」、余り「%=」の代入演算子もあります。
表でまとめると次の通りです。
内容 | 代入演算子 | 同じ意味の処理 |
---|---|---|
$numに3足す | $num += 3; | $num = $num + 3; |
$numから3引く | $num -= 3; | $num = $num - 3; |
$numに3かける | $num *= 3; | $num = $num * 3; |
$numを3で割る | $num /= 3; | $num = $num / 3; |
$numを3で割った余り | $num %= 3; | $num = $num % 3; |
また、文字列の結合演算子「 . 」にも、結合代入演算子「 .= 」というのがあります。
これは、変数に代入されている文字列の後ろに、さらに文字列を追加する演算子です。
内容 | 代入演算子 | 同じ意味の処理 |
---|---|---|
$strの後ろに「ABC」を追加 | $str .= 'ABC'; | $str = $str . 'ABC'; |
サンプルプログラム
代入演算子を使ったサンプルプログラムを書きます。
echo の出力内容はコメントで書きます。
<サンプルプログラム1>
代入演算子「+=」を使った例です。
<?php $num = 3; $num += 2; echo $num . '<br>'; //5が出力される $num += 4; echo $num . '<br>'; //9が出力される
<サンプルプログラム2>
代入演算子「-=」を使った例です。
<?php $num = 0; $num -= 3; echo $num . '<br>'; //-3が出力される $num -= 4; echo $num . '<br>'; //-7が出力される
<サンプルプログラム3>
代入演算子「*=」を使った例です。
<?php $num = 2; $num *= 3; echo $num . '<br>'; //6が出力される $num *= 5; echo $num . '<br>'; //30が出力される
<サンプルプログラム4>
代入演算子「/=」を使った例です。
<?php $num = 60; $num /= 2; echo $num . '<br>'; //30が出力される $num /= 3; echo $num . '<br>'; //10が出力される
<サンプルプログラム5>
結合代入演算子「.=」を使った例です。
<?php $message = '今日は'; $message .= '晴れ'; echo $message . '<br>'; //「今日は晴れ」が出力される $message .= 'です。'; echo $message . '<br>'; //「今日は晴れです。」が出力される
加算子 / 減算子
加算子 (インクリメント演算子)
「加算子」は、変数の値を1カウントアップする演算子であり、「++」のように記述します。
別名「インクリメント演算子」とも呼ばれます。
加算子「++」は変数の前または後ろにくっつけて使用します。
変数$aを使って書くと、前にくっつけた場合は「++$a」、後ろにくっつけた場合は「$a++」になります。
サンプルプログラムを書きます。
サンプルプログラム1
まず「++$a」を使ったサンプルプログラムを書きます。
<?php $a = 5; ++$a; echo $a;
<実行結果>
6
最初変数$aの値は5でしたが、次の「++$a」により、$aの値が1カウントアップされ、最終的に$aの値は6になります。
サンプルプログラム2
次に「$a++」を使ったサンプルプログラムを書きます。
<?php $a = 5; $a++; echo $a;
<実行結果>
6
最初変数$aの値は5でしたが、次の「$a++」により、$aの値が1カウントアップされ、最終的に$aの値は6になります。
以上より、「++$a」と「$a++」は同じ処理だと思うかもしれません。
しかし、実は細かい点で処理が異なります。
そのことについて、次に説明します。
「++$a」と「$a++」の異なる点
まず「++$a」と「$a++」のそれぞれの正確な説明をすると次のようになります。
式 | 名前 | 説明 |
---|---|---|
++$a | 前置加算子 | $aに1を足してから、$aの値を返す |
$a++ | 後置加算子 | $aの値を返してから、$aに1を足す |
ちょっと、難しいですよね!?
そう思った方に朗報です(笑)
実は、この内容はそれほど重要ではありません。
安心してもらうために、結論から言います。
正直「$a++」だけ覚えておけばOKです。「++$a」の書き方はほとんど使われません。
なぜなら、「++$a」と「$a++」の動きが異なるのは、特殊な書き方をした場合のみだからです。
現在は、誰もが読めるような可読性(読みやすさ)の高いプログラムを記述するのが一般的であり、無理して特殊な記述をして読みにくいプログラムを書くのは嫌われる傾向があります。
(聞いたところによると、世界的に有名なIT企業が集まるシリコンバレーのプログラマーは、可読性の低いプログラムを書くだけで、クビになることもあるそうですw)
だから、特殊な書き方は避けた方が良いです。
あと、「$a++」の書き方を使う人が多く「++$a」で書く人はほとんどいません。
なので、「『$a++』だけ覚えておけばOK」だということです。
ということなのですが、参考までに「$a++」と「++$a」の処理結果が異なる場合のサンプルプログラムを書いておきます。
サンプルプログラム1
まず「++$a」を使ったサンプルプログラムを書きます。
<?php $a = 5; echo '最初は' . ++$a . '<br>'; echo '次は' . $a . '<br>';
<実行結果>
最初は6
次は6
サンプルプログラム2
次に「$a++」を使ったサンプルプログラムを書きます。
<?php $a = 5; echo '最初は' . $a++ . '<br>'; echo '次は' . $a . '<br>';
<実行結果>
最初は5
次は6
「サンプルプログラム1」と「サンプルプログラム2」の実行結果が違う点に気づきましたでしょうか?
「サンプルプログラム1」の「echo '最初は' . ++$a . '<br>';」は、まず変数$aを1カウントアップしてから、echoが実行されるため「最初は6」と出力されます。
それと比較して、「サンプルプロラム2」の「echo '最初は' . $a++ . '<br>';」は、まずechoを実行した後に、変数$aがカウントアップされるので「最初は5」と出力されます。
このように「++$a」または「$a++」を他の処理と組み合わせて1行で書いた場合に処理の違いが出ます。
複数の処理を1行にまとめて書くことは、プログラムの記述ミスが起こりやすくなるので、特に理由がない限りは、できるだけ使わない方が良いと思います。
減算子 (デクリメント演算子)
「加算子」の反対バージョンで「減算子」という演算子もあります。
「減算子」は、変数の値を1カウントダウンする演算子であり、「--」のように記述します。
別名「デクリメント演算子」とも呼ばれます。
減算子「--」は変数の前または後ろにくっつけて使用します。
変数$aを使って書くと、前にくっつけた場合は「--$a」、後ろにくっつけた場合は「$a--」になります。
プラスがマイナスになっただけで、使い方は同じです。
サンプルプログラムを書きます。
サンプルプログラム1
まず「--$a」を使ったサンプルプログラムを書きます。
<?php $a = 5; --$a; echo $a;
<実行結果>
4
最初変数$aの値は5でしたが、次の「--$a」により、$aの値が1カウントダウンされ、最終的に$aの値は4になります。
サンプルプログラム2
次に「$a--」を使ったサンプルプログラムを書きます。
<?php $a = 5; $a--; echo $a;
<実行結果>
4
最初変数$aの値は5でしたが、次の「$a--」により、$aの値が1カウントダウンされ、最終的に$aの値は4になります。
「--$a」と「$a--」の異なる点
「--$a」と「$a--」のそれぞれの正確な説明をすると次のようになります。
式 | 名前 | 説明 |
---|---|---|
--$a | 前置減算子 | $aから1を引いてから、$aの値を返す |
$a-- | 後置減算子 | $aの値を返してから、$aから1を引く |
サンプルプログラムは、「--$a」と「$a--」で書いた内容と考え方は同じです。
プラスとマイナスが異なるだけであり、説明が長くなるため割愛します。
気づきましたか?
代入演算子 / 加算子 / 減算子について説明してきましたが、次の処理が同じであることに気づきましたか?
<1加算(カウントアップ)する処理>
(1) $num = $num + 1; (2) $num += 1; (3) $num++;
<1減算(カウントダウン)する処理>
(1) $num = $num - 1; (2) $num -= 1; (3) $num--;
これらについては理解しておきましょう。
おわりに
今回は、代入演算子 / 加算子 / 減算子について説明しました。
これらはプログラムをスマートに記述するための演算子です。
よく使いますので、理解して使えるようになっておきましょう。
PHPプログラミング入門講座 〜 全記事一覧 〜
- PHPで開発された有名なWebサイト
- PHPでどのような機能が作れるか?
- サーバーについて理解しよう
- Webサーバーの処理について詳しく説明
- PHPプログラムの動作について説明
- パソコンにPHPの動作環境を構築しよう
- 一番簡単なPHPプログラムを書いてみよう
- ブラウザ画面にメッセージを表示しよう
- PHPタグの書き方と終了タグの省略
- 特殊なメッセージ(文字列)の書き方
- PHPプログラムで計算をしてみよう
- 変数
- 文字列の結合とヒアドキュメント
- ファイルの分割とファイルの読み込み
- コメント
- 定数
- 数値と文字列の性質・デバッグ
- 条件分岐 (if文)
- 論理型 (boolean型)
- 比較演算子
- 論理演算子
- 条件分岐 (switch文)
- 三項演算子
- 配列とforeach文
- 現在のページ:代入演算子 / 加算子 / 減算子
- ループ処理 (for文)
- ループ処理 (while文とdo-while文)
- break
- continue
- 連想配列
- 連想配列のループ処理