プログラム言語のキホンである変数、条件判定とループ:PHPではどう表すのか?
はじめに
これから始めるPHP入門コラムでは、PHPを学ぶ人が、PHPで簡単なプログラムを書けるようになるまでに必要な知識とポイントをTips的に書いていきます。今後PHPのスキルを身につけて仕事に役立てたい、という方のために「PHP技術者認定初級試験」の出題範囲を意識しながら進めていきますので、ぜひ最後までお付き合いください。
今回のあらすじ
- 変数
- 判定
- 繰り返し文
変数とは
前回までの連載でも使っていましたが、「変数」とは中に文字や数値などの値を入れておくことができるものです。名前に「数」という文字が入っていますが、数字以外だけでなく、文字列や関数など様々なものを入れられます。
$helloという変数の中に "こんにちは" という文字列を入れておけば、下の2つのechoは同じ結果を出力します。
変数を使えば、変数の中身を入れ替えるだけでプログラムの挙動を変更できます。プログラミングにはなくてはならない機能ですね。
変数名の決め方
PHPの変数には、以下のルールがあります。
- 先頭にドル記号($)を付ける
- 変数名の1文字目は、アンダースコア記号(_)と半角英字(A-Za-z)が使える
- 変数名の2文字目以降は、アンダースコア記号と半角英字、半角数字(0-9)が使える
- 英字の大文字と小文字は区別される
つまり、以下のような変数名はすべて有効です。
またこれらの変数は、すべて別々の変数として扱われます。ですが、$myname、$myName、$MyNameはとても紛らわしいので、同時に使わないようにしましょう。どの形式の変数を使うかは、プログラムを書く人の好みや、プロジェクトチームのコーディングルールなどによって決まります。次に示すのは、一般的な変数の命名法の例です。
変数名(呼称) | 説明 | 利点 | 欠点 |
---|---|---|---|
$myname | 全部小文字でつなげる | シンプル | 長い名前になると読みにくい |
$my_name (スネークケース) | 全部小文字で、単語の間にアンダースコアを入れる | 読みやすい | アンダースコアがある分変数名が長くなる |
$myName ((ローワー)キャメルケース) | 2単語目以降を大文字で始める | 普及している | 大文字にするのを忘れると違う変数になってしまう |
$MyName ((アッパー)キャメルケース) | 全ての単語を大文字で始める | …あるかな? | 「クラス名を大文字で始める」という慣習と紛らわしい |
$_my_name | 先頭にアンダースコアをつける。ローカル変数(その場だけで使う変数)に使うことが多い |
変数名の先頭に中に入れる値の種類を付けると、プログラムを書く人にとっての手助けになるかもしれません。後半で述べますが、PHPでは文字の「0」と数値の「0」が正反対の意味になることがあるので、このように変数名で分かるようにしておく手法もあります。
また、どこから入力された値なのか、分かるようにしておくのもよいでしょう。プログラミングでは、プログラムが直接設定した値以外(例えばデータベースから取得した値、ユーザーが入力した値、外部のAPIから取得した値)は「全て」リスクがあります。悪意のある改変がされているかもしれないですし、悪意はなくても入力が間違っているかもしれないからです。これらの区別を分かりやすくしておくと、バグの発見に役立つことがあります。
$inLoginId | ユーザーが入力したログインID |
---|---|
$okLoginId | $inLoginId の中身をチェックした後に小文字に変換したもの。データベースの保存などに使っても安全なもの |
$dbUserName | データベースから取得したユーザー名 |
$outUserName | $dbUserName をHTML出力用に直したもの |
変数への代入
変数に値を入れる(「代入」と言います)には、「代入演算子(=)」を使います。数学の等号記号とは使い方が少し違うので、注意してくださいね。
構文(書き方のルール)
変数 = 中に入れたい値;
代入する文の右辺には、式や関数を使うこともできます。
変数に値を加減乗除(四則演算)する場合は、省略した書き方もあります。以下の例では、それぞれ (a) と (b) は同じ処理をします。(b)が省略した書き方です。
値を1増やす(「インクリメント」と言います)ときは、「加算子(++)」を使うこともできます。以下の(a)~(d)の4つの例は、どれを選んでも、結果が同じになります。
加算子は変数の前にも後ろにも置けます。加算子を単体で使うときは両者に違いはありませんが、式や関数の中で使うときは挙動が違うので注意してください。「++」を前に付ける(d)とインクリメントが先に行われ、後ろに付ける(c)と変数の値が参照された後にインクリメントされます。以下の2つの例で、その違いが分かるでしょう。
同様に、変数の値を1減らす(「デクリメント」)ときは「減算子(--)」が使えます。
文字列の場合
文字列も同様に、右辺で連結式を使うことができます。
次の2つは、どちらを選んでも同じ処理をします。
文字列の中のにある変数
ダブルクォーテーション(”)で文字列を囲んでいる場合は、囲んだ中で変数の中身を参照できます。
変数と文字列の区切りを明確にしたいときには、波カッコ({})で変数を囲います。