配列
配列(array)とは
- たくさんの変数を扱うときなど、値をまとめて記憶する
- 関連したデータを保存しておくための連なった箱
- 1番目の番号(インデックスまたは添字)は、「0」
配列の宣言と代入
- 「array関数」を使用して配列の宣言
- array関数を使わず、各配列要素に直接を代入
配列宣言のみを行う場合
配列変数名 = array ();
配列の宣言と初期化を行う場合
配列変数名 = array ( 値1, 値2, 値3・・・);
<?php // 配列 $youbi = array('Sun', 'Mon', 'Tue'); // echo $youbi[2]; $youbi[] = 'Wed'; $youbi[0] = 'Sunday'; unset($youbi[2]); var_dump($youbi);
《例》
<?php // 配列変数$nameを宣言し、各要素を設定して初期化しています $name = array( '佐藤', '山田', '鈴木' ); echo ( $name[0].'さん、'.$name[1].'さん、'.$name[2].'さん' );
配列の利用
- 「配列」でまとめて管理
- メッセージをまとめて管理する方法を考える
効率的ではなさそうな方法
$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構文」の書き方
- 生成した配列は、「添え字(そえじ)」を使って管理されます
- 添え字は、0から始まり大きさがnの配列では0から(n-1)が添字の番号になります
- 配列の各領域は、要素と呼びます
- 配列の各要素は、添え字を使って、表現します
$配列名 = array( 値1, 値2, 値3, … );
$city = array( '東京', '千葉', '神奈川' );
- 配列の最後に要素を追加するには、変数名に[ ](半角の角括弧)をつけて、追加する値を指定します
$city = array( '東京', '千葉', '神奈川' ); $city[] = '埼玉';
- 配列の値を変更するには、要素番号を指定して、変更後の値を指定します
- 先頭の要素「東京」が「埼玉」に変更されます
$city = array( '東京', '千葉', '神奈川' ); $city[0] = '埼玉';
配列要素に値を代入する
- 配列に値を記憶するには、添字を使って要素を指定し、値を代入する
$配列名[添字]= 値;
- array関数を使わず、以下のように各配列要素に直接、値を代入する
<?php $product[0] = '鉛筆'; $product[1] = '消しゴム'; $product[2] = '定規'; $product[3] = 'コンパス'; $product[4] = 'ボールペン';
配列要素に値を出力する
各要素の指定をするときの添字に変数を使う
<?php $product[0] = '鉛筆'; $product[1] = '消しゴム'; $product[2] = '定規'; $product[3] = 'コンパス'; $product[4] = 'ボールペン'; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>配列の値を出力する</title> </head> <body> <table border="1" width="100"> <tr><th>商品名</th></tr> <?php for ( $i = 0; $i < 5; $i++ ) { echo '<tr><td>' . $product[$i] . '</td></tr>' . "\n"; } ?> </table> </body> </html>
キーによる格納
- 配列の添字として文字列を使う
$配列名[ 'キー' ]= 値;
<?php $stock[ 'みかん' ] = 80; $stock[ 'いちご' ] = 60; $stock[ 'りんご' ] = 22; $stock[ 'もも' ] = 50; $stock[ 'くり' ] = 57; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>キーを使う</title> </head> <body> <table border="1" width="120"> <tr><th>在庫状況</th></tr> <?php echo '<tr><td>みかんは' . $stock[ 'みかん' ] .'個</td></tr>' . "\n"; echo '<tr><td>いちごは' . $stock[ 'いちご' ] . '個</td></tr>' . "\n"; echo '<tr><td>りんごは' . $stock[ 'りんご' ] . '個</td></tr>' . "\n"; echo '<tr><td>ももは' . $stock[ 'もも' ] . '個</td></tr>' . "\n"; echo '<tr><td>くりは' . $stock[ 'くり' ] . '個</td></tr>' . "\n"; ?> </table> </body> </html>
キーと値で繰り返し文
- 配列を扱う際、foreach文と呼ばれる特殊な繰り返し文を使うことができます
- キー用の変数と値用の変数を用意し、配列のキーと値を格納することができます
foreach($配列名 as $キー用の変数 => $値用の変数){
…
}
- 値だけを格納する場合
foreach($配列名 as $値用の変数){
…
}
<?php $stock[ 'みかん' ] = 80; $stock[ 'いちご' ] = 60; $stock[ 'りんご' ] = 22; $stock[ 'もも' ] = 50; $stock[ 'くり' ] = 75; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>foreach文を使う</title> </head> <body> <table border="1" width="160"> <tr><th>商品名</th><th>在庫状況</th></tr> <?php foreach ( $stock as $name => $value ) { echo '<tr><td>' . $name . '</td><td>' . $value . '個</td></tr>' . "\n"; } ?> </table> </body> </html>
添字(インデックス)と繰り返し文
- キーとして添字も出力できる
<?php $product[0] = '鉛筆'; $product[1] = '消しゴム'; $product[2] = '定規'; $product[3] = 'コンパス'; $product[4] = 'ボールペン'; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>foreach文で添字を出力する</title> </head> <body> <table border="1" width="160"> <tr><th>番号</th><th>商品名</th></tr> <?php foreach ( $product as $id => $value ) { echo '<tr><td>' . $id . '</td><td>' . $value . '</td></tr>' . "\n"; } ?> </table> </body> </html>