配列
配列とは
- 変数に格納できる値は「一つ」ですが、配列にはたくさんの値が格納できます
- 配列の変数名には、[ ]をつけ、この[ ]の中に要素を特定するための「キー」を指定します
array関数
- 配列を作成し、値を代入するときに使う
配列の値を取り出す
- $配列名[キー]
- for文を使う
- 要素の数を count関数で調べて for文を使う
$a = array(配列の要素); for ( $i = 0; $i <= count($a); $i++ ) { //処理 }
<?php $color = array( '赤', '黄', '緑', '青', '紫', '黒' ); for( $i = 0; $i <=count($color); $i++ ){ echo $color[$i] . "<br>\n"; }
list関数
- list(変数0, 変数1, 変数2, …) = 配列
<?php $animal = array( 'きつね', 'ねこ', 'こあら', 'らっこ', 'こうもり', 'りす' ); list( $a, $b, $c, $d, $e, $f ) = $animal; echo $a . 'と' . $b . 'と' . $c . 'と' . $d . 'と' . $e . 'と' . $f;
print_r関数
- print_r($変数)
- print_r関数の引数に配列を指定すると、すべての要素の「キー」と「値」をわかりやすい形式で表示します
<pre> <?php $color = array( '赤', '黄', '緑', '青', '紫', '黒' ); print_r( $color ); ?> </pre>
連想配列(associative array)
- ハッシュ(hash)
- 添字(インデックス)の代わりに、任意の文字列を「キー(key)」として値を保存する方法です
- PHPでは、ハッシュは配列と同じように扱われています
- PHPの構文では、「キー => 値」のように記述します
《例》
日曜日の売り上げ → $sales[ 'sun' ]
月曜日の売り上げ → $sales[ 'mon' ]
火曜日の売り上げ → $sales[ 'tue' ]
水曜日の売り上げ → $sales[ 'wed' ]
木曜日の売り上げ → $sales[ 'thu' ]
金曜日の売り上げ → $sales[ 'fri' ]
土曜日の売り上げ → $sales[ 'sat' ]
連想配列の作成
- array関数を使用する場合は、「=>」とい記号を使います
<?php $sales = array( 'sun'=>10, 'mon'=>20, 'tue'=>30, 'wed'=>40, 'thu'=>50, 'fri'=>60, 'sat'=>70 ); echo '土曜日と日曜日の売り上げの合計は、' . ( $sales[ 'sat' ] + $sales[ 'sun' ] ) . 'です。';
foreach文
- foreach文は配列専用のfor文で、回数を指定しなくともすべての要素に対して処理を繰り返します
foreach ( $配列名 as $変数 ) {
//要素の数だけ繰り返す処理
}
- 「$配列名」の後に「as」と任意の名前「$変数」を記述します
- ある要素を処理するときの、その要素の値を「$変数」へ次々に代入します
<?php $color = array( '赤', '黄', '緑', '青', '紫', '黒' ); foreach ( $color as $v ){ echo $v . "<br>\n"; }
キーから値を取得するプログラム
《input.php》
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>英語を日本語に変換</title> </head> <body> <form action="output.php" method="post"> <p>次の英語のどれかを入力してください:例(apple、banana、orage、potato、tomato) <p><input type="text" name="english"></p> <p><input type="submit" value="変換"></p> </form> </body> </html>
《output.php》
<?php if ( !isset($_POST[ 'english' ]) ) { // 値が入力されていない場合(フォームを表示) header( 'Location:input.php' ); exit; } else { $h = array ( 'apple' => 'リンゴ', 'banana' => 'バナナ', 'orange' => 'ミカン', 'potato' => 'ジャガイモ', 'tomato' => 'トマト' ); $key = htmlspecialchars( $_POST[ 'english' ], ENT_QUOTES, 'UTF-8' ); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>英語を日本語に変換結果</title> </head> <body> <?php if ( array_key_exists( $key, $h ) ) { echo '英語「' . $key . '」は、日本語で「' . $h[ $key ] . '」です。'; } else { echo $key . 'は、登録されていません。'; } ?> </body> </html>
- ハッシュ「$h」を定義
- $keyに、name='english'にフィールドに入力された値を代入する
- ハッシュ「$h」の「キー」として存在するかどうかを調べます
array_key_exists関数
- 指定したキーまたは添字が配列にあるかどうかを調べる
if ( array_key_exists( $key, $h ) ) {
//キーが存在するときに実行されるプログラム
}
ハッシュの要素をひとつずつ取り出す
キー一覧から参照する
<?php $keylist = array_keys($h); for ( $i - 0; $i < count( $keylist ); $i++ ) { echo $h[ $keylist[ $i ] ] . "<br>\n"; }
foreach文を使う
<?php foreach ( $h as $key => $value ) { echo $value . "<br>\n"; }