Webサイト制作科 - 作品紹介

Webサイト制作科 - 作品紹介

配列

「配列」でまとめて管理

  • メッセージをまとめて管理する方法を考える
効率的ではなさそうな方法
$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]

配列で管理された曜日ごとのメッセージを表示する
<?php
$message = array (
    '今日は定休日です',
    '9時〜22時まで営業',
    '9時〜22時まで営業',
    '特売日! 7時〜24時まで営業',
    '9時〜22時まで営業',
    '9時〜22時まで営業',
    '12時〜20時まで営業'
);

$w = date('w');
	echo $message[$w];
?>
  • 実行結果「火曜日の場合」


配列「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>';
}
?>