配列

配列とは

  • 変数に格納できる値は「一つ」ですが、配列にはたくさんの値が格納できます
  • 配列の変数名には、[ ]をつけ、この[ ]の中に要素を特定するための「キー」を指定します

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>
  1. ハッシュ「$h」を定義
  2. $keyに、name='english'にフィールドに入力された値を代入する
  3. ハッシュ「$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";
}