PHP超入門 (9)
前回から、プログラム作成の必須の知識として「変数」というものを説明して
います。
前回は、変数の中でも一番単純な「スカラー型」の変数についてお話しました
が、今回はもう少しというか、少々難しい変数についてのお話です。
■配列型の変数■
通常、プログラムでは、1つの変数には、1つのデータ(文字・数字)を入力
して、処理をする場合が殆どですが、場合により、1つの変数に複数のデータ
を入力して取扱った方が便利なことがあります。
この時に使用するのが、配列型の変数です。
上の変数の説明で、配列型の変数は、引き出しがたくさんあるたんすのような
もの(エクセルの1つのセルの中に、さらに複数のセルがある、というイメー
ジ)と言いましたが、ここで詳しく説明します。
配列型の変数を扱う時は、以下の様にします。
$kudamono = array("りんご","みかん","すいか","メロン","いちご")
「=」の右側の表現
array(○,×,△,□,・・・)
は、1つの変数に、複数のデータを格納する時の、PHPにおける表現方法で、
これにより、$kudamonoという変数の中に、「りんご」〜「いちご」の5個の
単語が格納されます。
今回の例は、「りんご」〜「いちご」の5個の単語ですが、もちろん、5個以
上あるいは、5個以下の単語と、ユーザーの好きなだけの個数が指定できます。
逆に、$kudamonoという変数から、それぞれの単語を取り出すには、一般的な
表現を用いると
$変数名[番号]
となり、上記の例では、「りんご」という文字を取り出したい時は、
$kudamono[0]
「みかん」という文字の時は
$kudamono[1]」
という具合に書きます。
この場合、「$kudamono」という変数の中に、それぞれの文字が格納されてい
るイメージは、以下のようになっていると、お考えください。
$kudamono
+------------+
| りんご | ← $kudamono[0]
+------------+
| みかん | ← $kudamono[1]
+------------+
| すいか | ← $kudamono[2]
+------------+
| メロン | ← $kudamono[3]
+------------+
| いちご | ← $kudamono[4]
+------------+
さて、上の例では、文字を扱ったケースですが、数字の場合も全く同様です。
$suuji = array(10,11,12,13,14);
すると以下の図の様に値が格納されます。
$suuji
+------------+
| 10 | $suuji[0]
+------------+
| 11 | $suuji[1]
+------------+
| 12 | $suuji[2]
+------------+
| 13 | $suuji[3]
+------------+
| 14 | $suuji[4]
+------------+
文字の時の例と同様、
「10」という数字を取り出したい時には、「$suuji[0]」
「12」という数字を取り出したい時には、「$suuji[2]」
と指定することにより、$suujiという変数に格納された各数字を取り出すこと
ができます。
余談になりますが、コンピュータの世界では、数字の並びの開始は、「0」か
ら始まると理解してください。
私たちの日常生活では、「1,2,3,4,5・・・」と数を数えていきますが、コン
ピュータの世界では「0,1,2,3,4・・・」となります。
上記の例で、「最初に(先頭に)」格納されているデータを取り出す時の指定
は、「$kudamono[0]」「$suuji[0]」であり、「$kudamono[1]」「$suuji[1]」
ではないことに注意してください。
これを理解していないと、後で自分で作ったプログラムが、考えていたように
動かない、といった事態にもなります。
上の宣言は連続して1づつ値が増加しているので
$foo = range(10,14);
と宣言することもできます。
空の配列は
$foo = array();
の様に宣言します。
値の代入は以下の様にします。
$foo[2] = 100; //$fooの3番目に100を入れる
また、配列を扱う上でよく使う関数を列挙します。
count
http://jp2.php.net/manual/ja/function.count.php
list
http://jp2.php.net/manual/ja/function.list.php
array_push
http://jp2.php.net/manual/ja/function.array-push.php
array_pop
http://jp2.php.net/manual/ja/function.array-pop.php
array_shift
http://jp2.php.net/manual/ja/function.array-shift.php
array_unshift
http://jp2.php.net/manual/ja/function.array-unshift.php
array_splice
http://jp2.php.net/manual/ja/function.array-splice.php
array_merge
http://jp2.php.net/manual/ja/function.array-merge.php
■ハッシュ(連想配列)型の変数■
ハッシュ(連想配列)型の宣言は以下の様にします。
$foo = array( 'a' => 10,'b' => 11,'c' => 12,'d' => 13,'e' => 14);
配列型の場合は、
array(○,×,△,□,・・・)
という具合に、変数に格納する値だけを記述しましたが、ハッシュ型の場合は
値とペアで使うその名称も記述します。
すなわち、上の例でいうと、
「'a' => 10」は10という値の名称は「a」
「'b' => 11」は11という値の名称は「b」
「'c' => 12」は12という値の名称は「c」
というような意味を表しています。
すると以下の図の様に値が格納されます。
+------------+
| 10 | $foo['a']
+------------+
| 11 | $foo['b']
+------------+
| 12 | $foo['c']
+------------+
| 13 | $foo['d']
+------------+
| 14 | $foo['e']
+------------+
1番目に格納された値を参照するのは
$変数名[ハッシュ名]、つまり、例えば、「10」という値を取り出したいとき
は、$foo['a']と指定します。
すなわち、配列の要素を参照するのに名称を使えるということです。
値の代入は以下の様にします。
$foo['c'] = 100; //$fooの3番目に100を入れる
また、ハッシュ(連想配列)を扱う上でよく使う関数を列挙します。
array_keys
http://jp2.php.net/manual/ja/function.array-keys.php
array_values
http://jp2.php.net/manual/ja/function.array-values.php
以上の説明だけですと、何がなにやらサッパリ分からないかもしれません。
今の時点では、「フ〜ン」と軽く読み流してくださっても結構ですが、後の方
になって、フォームを使って、ページ間の値の受け渡しをする時には、ハッシ
ュ型の変数が大活躍しますので、チョッピリと頭の隅っこに置いといてくださ
い。
今回は、単なる配列型しハッシュ型の変数の変数の説明だけに終わってしまい、
いまひとつピンとこなかったかもしれませんので、次回は、簡単なプログラム
を組んで、その具体的な動作を確認したいと思います。