配列
「配列」でまとめて管理
- メッセージをまとめて管理する方法を考える
効率的ではなさそうな方法
$sun = '今日は定休日です'; $mon = '9時〜22時まで営業'; $tue = '9時〜22時まで営業'; $wed = '特売日! 7時〜24時まで営業'; $thu = '9時〜22時まで営業'; $fri = '9時〜22時まで営業'; $sat = '12時〜20時まで営業';
効率的に「引き出し」に整理する
- メッセージをしまう引き出し(メッセージ1、メッセージ2、メッセージ3・・・)
曜日ごとのメッセージ { '今日は定休日です', '9時〜22時まで営業', '9時〜22時まで営業', '特売日! 7時〜24時まで営業', '9時〜22時まで営業', '9時〜22時まで営業', '12時〜20時まで営業' }
曜日ごとの規則性
- 1段目:日曜日のメッセージ(曜日番号:0)
- 2段目:月曜日のメッセージ(曜日番号:1)
- 3段目:火曜日のメッセージ(曜日番号:2)
- 4段目:水曜日のメッセージ(曜日番号:3)
- 5段目:木曜日のメッセージ(曜日番号:4)
- 6段目:金曜日のメッセージ(曜日番号:5)
- 7段目:度曜日のメッセージ(曜日番号:6)
「曜日番号」とは、date関数「date('w')」で取得できる各曜日の番号です。
複数の値を「引き出し」にまとめて管理
- 「配列」を使う
- 1つの変数に複数の値を格納できる
配列の使い方
- 複数の項目をカンマで区切ってまとめる
- 「array」という命令を使う
$message = array { '今日は定休日です', '9時〜22時まで営業', '9時〜22時まで営業', '特売日! 7時〜24時まで営業', '9時〜22時まで営業', '9時〜22時まで営業', '12時〜20時まで営業' }
この配列に対して番号を指定すれば、その値を参照したり変更したりできます。
位置 |
要素の値 | 参照するとき |
---|---|---|
1番目 | 今日は定休日です | $message[0] |
2番目 | 9時〜22時まで営業 | $message[1] |
3番目 | 9時〜22時まで営業 | $message[2] |
配列「array構文」の書き方
- 最後の「, カンマ」は不要ですが、つけておくと追加がしやすくなります
$ar = array( '東京', '千葉', '神奈川', );
- 配列の最後に要素を追加するには、変数名に[ ](半角の角括弧)をつけて、追加する値を指定します
$ar = array( '東京', '千葉', '神奈川', ); $ar[] = '埼玉';
- 配列の値を変更するには、要素番号を指定して、変更後の値を指定します
- 先頭の要素「東京」が「埼玉」に変更されます
$ar = array( '東京', '千葉', '神奈川', ); $ar[0] = '埼玉';
連想配列
- インデックスに名前をつける
- 中身を連想できるようなインデックスをもつ配列
連想配列を作成
- 内容が連想できるインデックスをつけておきます
- インデックスと値は「=>」でつなぎます
<?php $message = array ( 'sun' => '今日は定休日です', 'mon' => '9時〜22時まで営業', 'tue' => '9時〜22時まで営業', 'wed' => '特売日! 7時〜24時まで営業', 'thu' => '9時〜22時まで営業', 'fri' => '9時〜22時まで営業', 'sat' => '12時〜20時まで営業' ); echo $message['sun']; ?>
要素を追加したり変更する
<?php $message['sun'] = '今日は定休日です'; $message['mon'] = '9時〜22時まで営業'; $message['tue'] = '9時〜22時まで営業'; $message['wed'] = '特売日! 7時〜24時まで営業'; $message['thu'] = '9時〜22時まで営業'; $message['fri'] = '9時〜22時まで営業'; $message['sat'] = '12時〜20時まで営業'; echo $message['tue']; ?>
「foreach文」で、配列の処理コードを簡単に
- 配列をループ処理するという発想
配列を最後まで処理して自動で終了する仕組み
ループ処理(終了条件) { 繰り返す処理 }
都道府県名一覧を表示
- for文のように「ループカウンター」を使って回数を指定はできません
- 「配列を最後まで読み取ったら終了」という終了条件を指定する
ループ処理(配列の最後まで処理したら終了) { 取得した1つの都道府県名を表示 }
foreach文の使い方
- 配列から要素を1つずつ取り出し、最後まで到達すると自動でループを終了する
- 次の要素がある間は処理が続く
foreach(次の要素を取得) { 取得した要素を処理 }
foreach文の書き方(1)
- 「$ar as $v」は、配列$arの要素を$vに1つずつ取り出すの意味
- 先頭の要素、2番目の要素、3番目の要素と順番に処理されていきます
<?php $ar = array('東京', '千葉', '神奈川'); foreach ($ar as $v) { echo $v.'<br>'; } ?>
foreach文の書き方(2)
- インデックスと値を関連付けた連想配列を処理する場合は、インデックスと値を別々に扱うことができます
- インデックスと値は「=>」でつなぐ必要があります
- 「$ar as $k => $v」と記述すると、配列$arのインデックスが$kに、値が$vに格納されます
<?php $ar = array('tky' => '東京', 'chb' => '千葉', 'kng' => '神奈川'); foreach ($ar as $k => $v) { echo 'インデックス:' . $k . '名前:' . $v . '<br>'; } ?>