Search A.I.
Menu
ホーム

メールマガジン ホームページプログラミングテク

Windowsテク
Javaアプレット サンプル
Java Q & A
JavaScript Q & A
Perl Q & A
Perl レッスン
PHP レッスン
PHPテク
MS-DOS コマンド集
UNIX コマンド集
SQL コマンド集
SEの基礎講座
WEBシステム開発受注します
]無料フォームメール送信サービス
リンク集
PHP レッスン

1. PHP の基礎
2. PHPの文法、条件式
3. PHPの文法、条件式 - 続き
4. 配列について
5. ハッシュ配列について
6. 関数について
7. 関数について - 続き
8. 文字列操作関数
9. 配列操作関数
10. ファイル操作
11. ファイル操作 - 続き
12. パラメータの受け渡し
13. クッキーとセッション
14. 総合練習
15. メール送信
16. ファイルアップロード
17. クラスについて
18. クラスについて - 続き
19. MySQL
20. MySQL - 続き(1)
21. MySQL - 続き(2)
22. PostgreSQL
23. 総合練習
24. 総合練習解答



5. ハッシュ配列について

今日は、ハッシュ配列について詳しくご説明いたします。

■ハッシュ配列とは
ハッシュとは簡単に言ってしまうと、文字列を添字とする配列です。

通常の配列

$a[0]
$a[1]

の数字の部分が文字列のキーとなります。

$a['name']
$a['email']

[ ] の代わりに { } を、' ' の代わりに " " を使用してもできます。

ハッシュ配列を使用すると、簡易的なデータベースとして扱うこともできます。

$a[0]に名前、$a[1]にメールアドレスが入っているとするより、$a['name']に名前、
$a['email']にメールアドレスが入っているとした方が分かりやすいですね。

■ハッシュへの代入

$Hash = array( "one" => 1 , "two" => 2 , "three" => 3 );

キー値 => 値という組み合わせでハッシュ配列を定義しています。
キー値 one two three
値 1 2 3

$Hash['five'] = 5;

キー = "five"、値 = 5 と対応して作成されます。

$Hash = array();

空のハッシュ配列を作成、もしくは、配列の中身を空にします。

■参照
次に示すサンプルハッシュを元に、ハッシュを参照するやり方を見てみます。
【サンプルハッシュ】

-----------------------------------------------------------------
$Hash = array( "one" => 1 , "two" => 2 , "three" => 3 );

print $Hash['two'];
-----------------------------------------------------------------

ハッシュのキー値"two"に対応づけられた値が表示されます。

表示 → 2

-----------------------------------------------------------------
print_r($Hash);
-----------------------------------------------------------------

キー値、関連付けられた値の全てを出力します。ただし、その順番は保証されません。

表示 → Array ( [one] => 1 [two] => 2 [three] => 3 )

ハッシュ全ての要素に処理を行う場合は、foreachを使用して全てのキー値を出力する
ことができます。

foreach ($ハッシュ名 as $キー => $値) {
処理
}

このように記述すると、$キーと$値に、それぞれキーと値が順番に格納されてループ
します。全て参照し終わった時点でこのforeachブロックを終了します。

-----------------------------------------------------------------
foreach ( $Hash as $key => $value ) {
print "キー値 : $key\n";
print "値 : $value \n";
}
-----------------------------------------------------------------

上記の場合、$keyにキー値が、$valueにハッシュ値が入ります。

ハッシュ配列を操作する関数がいくつかありますが、関数については、別の機会に
まとめてご紹介します。

 

★今日のまとめサンプルプログラム
-----------------------------------------------------------------
<HTML>
<BODY>
<?

$weekday = array(
1=>'Sunday',
2=>'Monday',
3=>'Tuesday',
4=>'Wednesday',
5=>'Thursday',
6=>'Friday',
7=>'Saturday');

foreach ($weekday as $key => $value ) {
print $value . '<br>';
}

print "<br>12月3日は";
print $weekday['6'];
print "です。<br>";

?>
</BODY>
</HTML>
-----------------------------------------------------------------

■解説
サンプルを実行していただくと分かると思いますが、キー7の要素"Saturday"から
表示されているかと思います。

基本的にハッシュ配列はあまり順番を意識するものではなく、キーを指定して値を
取り出す配列なので、あまりループで回して処理をするこということは少ないと
思います。

 

★課題
1. 以下のハッシュ配列

$weekday = array(
1=>'Sunday',
2=>'Monday',
3=>'Tuesday',
4=>'Wednesday',
5=>'Thursday',
6=>'Friday');

の配列を作成してから、
7=>'Saturday'
を追加し、HTML中に全て表示してください。

2. 以下のキーとデータをハッシュ配列に格納し、HTML中に全て表示してください。

name : しょう
email : searchai@zw.main.jp
address : 東京都渋谷区
tel : 090-6934-9953

 

★前回の課題の解答
1. 以下の データを配列に格納し、HTML中にfor文を使用して表示するプログラムを
作成してください。
'Jan','Feb','Mar','Apr','Jun','Jul','Aug','Sep','Oct','Nov','Dec'

→下のサンプルを参照してください。

2. 以下は、ある11人のテストの点数です。11人の合計点と平均点をHTML中に
表示するプログラムを作成してください。
75点、80点、88点、49点、69点、77点、93点、72点、81点、58点、72点

→下のサンプルを参照してください。

-----------------------------------------------------------------
<HTML>
<BODY>
<?

// 1.の解答例
$month = array('Jan','Feb','Mar','Apr','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

for ($i = 0; $i < count($month); $i++) {
print $month[$i] . " ";

}

print "<br>";

// 2.の解答例
$sum = 0;
$ary = array(75,80,88,49,69,77,93,72,81,58,72);
foreach ($ary as $tmp) {
$sum += $tmp;
}

$avg = $sum / count($ary);

print "合計点は $sum 点です。<br>";
print "平均点は $avg 点です。<br>";

?>
</BODY>
</HTML>
-----------------------------------------------------------------

■解説
for文でループさせる場合は、カウントする変数を使用して配列を 1つずつ取り出し
ます。配列の最大数は、count()で取ることができます。

テストの点数は、合計点を計算し、別の変数に平均点を格納しておくとよいかと
思います。




前の章へ 次の章へ


このエントリーをはてなブックマークに追加


OfficeLance

お問い合わせはこちらから