PHP超入門 (12)
さて、前々回より、PHPプログラムの基礎となる変数というものについてお
話をさせていただいていますが、変数には、
・スカラー型変数
・配列型変数
・連想配列(ハッシュ)
という3種類が主としてあります。
前回までで、スカラー型と配列型の変数について細かく説明してきましたが、
今回は、変数の最後である、連想配列(ハッシュ)についてお話したいと思い
ます。
この、連想配列(ハッシュ)は配列型配列に似ていますので、理解がしやすい
と思いますし、ホームページ上でフォームを使って文字や数値をやり取りする
時にも大活躍します。
■連想配列(ハッシュ)についてイメージ的な説明
以前にもお話しましたが、ハッシュは、引き出しがたくさんあるたんすで、引
き出しに見出し(名前)が張ってあるたんす、といった変数です。
ハッシュを作るには、まず、
$nedan = array("りんご"=>"100円","みかん"=>"30円","すいか"=>"150円",
"メロン"=>"500円","いちご"=>"300円")
と書きます。
すなわち、array()の中に、「=>」を挟んで、右側に変数の値、左側に変数の
中の値を指定する時の名前(上の例で言うと、引き出しに張ってある見出し)
を記述します。
前回の配列型変数の場合は、変数に入れるものは、「りんご」〜「いちご」の
果物の名前だけでしたが、今回のハッシュの場合は、それに加えて、各果物の
値段を$nedanという変数の中に代入しています。
この命令を行ったあとの$kudamonoという変数の中身のイメージは
$nedan
+------------+
| 100円 | ← $nedan["りんご"]
+------------+
| 30円 | ← $nedan["みかん"]
+------------+
| 150円 | ← $nedan["すいか"]
+------------+
| 500円 | ← $nedan["メロン"]
+------------+
| 300円 | ← $nedan["いちご"]
+------------+
といった感じになります。
これで、変数に格納されたイメージは分かると思いますが、問題は、これらの
1つ1つを如何に取り出してブラウザに表示させるかです。
ここで、前回と同じようにイタズラで単純に次のように書いたPHPプログラ
ムを試してみます。
----------------------------------------------------------------------
<?php
$nedan = array("りんご"=>"100円","みかん"=>"30円","すいか"=>"150円"
,"メロン"=>"500円","いちご"=>"300円");
print($nedan);
?>
----------------------------------------------------------------------
余裕のある人は、上のプログラムを066-1.phpという名前で、C:\Inetpub\wwwr
oot\phpフォルダに保存して、
ブラウザのアドレス欄にhttp://localhost/php/066-1.phpと入力してみてくだ
さい。
結果として示されるのは、前回と同様
----------
Array
----------
という、意味の分からない、文字が表示されるのみで、格納されている果物の
値段は1つも表示されません。
実際の例はコチラ →
http://www.e-and-a.ws/05/067-1.php
※ちなみに、これは、前回同様、変数$nedanはスカラー型ではなく、配列です
よ、ということを意味しています。
また、ハッシュの場合、array(○=>●,△=>▲,□=>■,☆=>★,・・・)という
書き方だと、横にズラ〜と長くなってしまうので、別の書き方があります。
それは、
-------------------------------
$nedan["りんご"] = "100円";
$nedan["みかん"] = "30円";
$nedan["すいか"] = "150円";
$nedan["メロン"] = "500円";
$nedan["いちご"] = "300円";
--------------------------------
という具合に変数に入れる要素を一行づつ分けて、記述していく方法です。
どちらの方法でも、$nedanに入る要素の中身はおんなじですので、ご自分の趣
味とケースに応じて使い分けてください。
■ハッシュから値を取り出す
上記のようにして、$nedanという変数に値は入ったわけですが、次はそれをど
うやって値を取り出して、プログラム中で活用するかです。
以下にその例題を示します。
----------------------------------------------------------------------
<?php
$nedan = array("りんご"=>"100円","みかん"=>"30円","すいか"=>"150円"
,"メロン"=>"500円","いちご"=>"300円");
print("りんごの値段は".$nedan["りんご"]."です");
?>
-----------------------------------------------------------------------
※print()の中にある「.」は文字列を結合させる働きがあり、「りんごの値
段は」と「$nedan["りんご"]の中身」と「です」の3個の内容を結合させて
横一列に表示させることができます。
これを、067-2.phpという名前で、C:\Inetpub\wwwroot\phpフォルダに保存し
て、
ブラウザのアドレス欄にhttp://localhost/php/067-2.phpと入力してみてくだ
さい。
そうするとブラウザには
----------------------------
りんごの値段は100円です
----------------------------
と表示されると思います。
実際の例はコチラ →
http://www.e-and-a.ws/05/067-2.php
マァ、いとつだけ表示するのもなんですから、$kakakuに入って内容をすべて
表示させてみましょう
----------------------------------------------------------------------
<?php
$nedan = array("りんご"=>"100円","みかん"=>"30円","すいか"=>"150円"
,"メロン"=>"500円","いちご"=>"300円");
print("りんごの値段は".$nedan["りんご"]."です"."<br>");
print("みかんの値段は".$nedan["みかん"]."です"."<br>");
print("すいかの値段は".$nedan["すいか"]."です"."<br>");
print("メロンの値段は".$nedan["メロン"]."です"."<br>");
print("いちごの値段は".$nedan["いちご"]."です"."<br>");
?>
----------------------------------------------------------------------
※「<br>」はHTMLではおなじみの、改行を示すタグです
これを067-3.phpという名前で、C:\Inetpub\wwwroot\phpフォルダに保存して、
ブラウザのアドレス欄にhttp://localhost/php/066-3.phpと入力してみてくだ
さい。
そうすると、ブラウザには
----------------------------
りんごの値段は100円です
すかんの値段は30円です
すいかの値段は150円です
メロンの値段は500円です
いちごの値段は300円です
----------------------------
と表示されると思います
実際の例はコチラ →
http://www.e-and-a.ws/05/067-3.php
■PHPだけの特徴
これは本論には関係ないのですが、PHPは数字と文字が混在している並びで
も、数字の部分を判断して抜き取り、計算ができてしまいます。
例えば、$nedan["りんご"]には「100円」、$nedan["すいか"]には「150円」と
いう「文字」入っていますがが、これはあくまでも文字であって、数字ではあ
りません。
通常、他のプログラミング言語では、「100円+150円」という計算はできず、
どうしても「100+150」という数字だけの場合しか、計算は取り扱えません。
しかし、PHPの場合は、「100円+150円」という計算が出来てしまいます。
試しに、下のスクリプトを実行してみてください。
画面にはきちんと、「りんごとすいかの合計は250円です」と表示されます。
-------------------------------------------------------------------------------
<?php
$nedan = array("りんご"=>"100円","みかん"=>"30円","すいか"=>"150円"
,"メロン"=>"500円","いちご"=>"300円");
print("りんごとすいかの合計は".($nedan["りんご"] + $nedan["すいか"])."円です");
?>
-------------------------------------------------------------------------------
実例はコチラ →
http://www.e-and-a.ws/05/067-4.php
ただ、私個人の考えでは、これはイレギュラーな方法であって、便利ですが、
あまり使わない方がよいでしょう。