第8章 プログラムで計算してみよう
8.3 その他の計算方法を知っておこう
PHPにはこれまで学習した演算子の他にも、まだまだたくさんの演算子があります。知っておくと便利な演算子について、本節で使いながら1つずつ覚えていきましょう。
8.3.1 データとデータをくっつける文字列演算子
文字列は数値ではないので計算を行うことはできませんが、文字列にも演算子が用意されています。それは、文字列演算子と呼ばれる「.(ピリオド)」です。この文字列演算子を使うと、データとデータをくっつけて新しい文字列にすることができます。
書式:文字列演算子
ピリオドで区切っていけば、その数分だけ値を結合します。
凡例:文字列演算子
結合できる値は数値や文字列、変数や配列要素の値が可能です。
上記の凡例の各変数の文字連結結果は、$str1 = ‘神田ITスクール‘; 、$str2 = “富士山は日本1“; 、$str3 = “りんご500円“;と全ての値が1つに連結された文字列になります。
また、文字列演算子にも処理の優先順位が存在しています。文字を結合する(足す)処理なので優先順位は「+、-」と同レベルの優先順位になります。
変数の展開の文字連結の違いこれまで学習してきた「変数の展開」を利用すると、「文字連結」は使う意味がないように思えるかもしれません。実際どちらを使っても、処理内容は同じ結果にすることができます。では何が違うのかと言うと、文字連結に比べて変数の展開はより多くの「メモリを消費」するという点です。
もしも変数の展開を多く使用するケースがある場合は、文字連結で代用するほうがいいでしょう。
それでは文字列演算子を利用したプログラムを見てみましょう。
文字列演算子を利用するプログラム
文字列とある変数の値を文字連結を行い、その計算結果をWebブラウザに表示して確認してみましょう。
ソース・フォルダー: myproj_intro/ch08
パッケージ: dataStick.php
アクセスURL:http://localhost/myproj_intro/ch08/dataStick.php
dataStick.php
解説
2、3行目で今回の文字連結用に使用するデータとして趣味と年数の設定を変数に行っています。
6行目で文字列演算子「.(ピリオド)」を利用して連結したデータを、変数$strに代入しています。
14行目では文字列と変数の値とを「.(ピリオド)」の文字列演算子を利用して結合した結果を画面に表示しています。15行目は6行目で連結して作成したデータを表示させています。
実行結果を見ても分かるように、文字列演算子を利用して結合した文字列を正しく表示できています。
図 8.3.1: 文字列演算子を利用して連結
ポイント
- 文字列演算子を利用するとデータ同士を連結できる。
- 文字列演算子は算術演算子の+、-と同じ優先順位になる。
8.3.2 代入処理を簡潔にできる複合演算子
8.2節の「useVariavleCalc.php」プログラムの中で、「変数に同じ変数を使った計算結果を代入する」という処理がありました。PHPプログラムではそのような記述を簡潔に書ける「複合演算子」と呼ばれる演算子が用意されています。
複合演算子は基本的に「各演算子記号と代入演算子記号」の組み合わせで使用できます。主な複合演算子は以下の表8.3.1に示します。
表 8.3.1: 複合演算子
※複合演算子の記号同士は必ずくっつけて記述する
複合演算子を利用するプログラム
複合代入演算子を利用して計算を行い、その計算結果をWebブラウザに表示して確認してみましょう。
ソース・フォルダー: myproj_intro/ch08
パッケージ: easyCalc.php
アクセスURL:http://localhost/myproj_intro/ch08/easyCalc.php
easyCalc.php
解説
2、3行目で計算に利用するデータを配列$numsと変数$numにそれぞれ用意しています。
6~11行目で配列要素と$numの計算結果を、複合演算子を使って計算に使った配列の要素へ再代入しています。
6行目を例に挙げると複合演算子の記述「$nums[0] += $num;」は「$nums[0] = $nums[0] + $num;」を行っているのと同じ処理になります。残りの複合演算子も演算子に応じた処理(-、*、%、.)を行います。
図 8.3.2: 複合演算子(加算代入)を利用して計算の例
19~25行目は複合演算子を使って、計算した結果が格納されている配列の各要素を画面に表示しています。実行結果を見ても分かるように複合代入演算子を利用した処理が正しく行えていることが確認できます。
処理に使った変数と同じ変数に処理結果を代入したい場合は、複合演算子を使って書くと少しでも記述が少なくなり楽になると思いますのでどんどん活用してみてください。
ポイント
- 複合演算子を使うと処理の記述を短くすることができる。
8.3.3 変数の値を1増減する演算子
日常で物を数える時の基本として1つ増やしたり減らしたりしていきます。プログラムでも同じように1つずつ数を数えたい場面があります。そのような時に、これまでの学習したことを使って以下のように書くことができます。
上記は$count変数の値を1増やす、1減らす処理になります。複合演算子を使えば十分短い記述でおこなえますが、もっと簡単な記述で行える専用の演算子「++(インクリメント演算子)」と「—(デクリメント演算子)」が用意されています。変数の値を1増やす処理を「インクリメント」、1減らす処理を「デクリメント」と呼びます。
表 8.3.2: インクリメント/デクリメント演算子
表8.3.2で示した使用例には2つの記述方法があります。変数の前に付けるのと、後ろに付けた場合では1増減する計算のタイミングに違いがあります。動作の違いはありますが、この演算子はある特定の処理が行われた回数を数えるカウンタのように使うことが一般的になります。
インクリメント/デクリメント演算子を利用するプログラム
変数の値をインクリメントで増やしたりデクリメントで減らした結果を、Web画面に表示して確認します。
ソース・フォルダー: myproj_intro/ch08
パッケージ: numChange.php
アクセスURL:http://localhost/myproj_intro/ch08/numChange.php
numChange.php
解説
7行目で変数$numに4を設定し、その値を確認するために8行目で画面に表示させています。
10行目では$numを「インクリメントで1増やす」処理を行っています。11行目の処理で結果を確認すると「5」と画面に表示され8行目のときよりも、値が1増えているのが確認できます。
13行目では$numを「デクリメントで値を1減らす」処理を行っています。14行目の処理で結果を確認すると「4」と画面に表示され11行目のときよりも、値が1減っているのが確認できます。
図 8.3.3: インクリメントとデクリメント結果
ポイント
- インクリメント演算子を利用すると、変数の値を1増やしてくれる。
- デクリメント演算子を利用すると、変数の値を1減らしてくれる。