読者です 読者をやめる 読者になる 読者になる

Webデザインの勉強 ハロートレーニング 受講生のためのWebデザインの勉強補足ブログ

連想配列とforeach文

連想配列

  • 基本的な配列の場合、配列要素の0番目、1番目・・・と添え字に数値を指定して、各要素の値を代入したり取得していましたが、連想配列を使用すると、添え字の代わりに文字列のキーを使用できます
  • インデックスに名前をつける
  • 中身を連想できるようなインデックスをもつ配列



配列変数名 = array( キー=>値1, キー=>値2, キー=>値3・・・);

連想配列を作成
  • 内容が連想できるインデックスをつけておきます
  • インデックスと値は「=>」でつなぎます
<?php
  // 連想配列変数$presentの宣言と初期化
  $present = array ( '長崎'=>'チャンポン', '名古屋'=>'手羽先', '沖縄'=>'泡盛' );

  // キーを指定して、値を取得します
  echo $present['長崎'];
  echo '<br>';
  
  // キーを指定して、値を取得します
  echo $present['名古屋'];
  echo '<br>';
  
  // キーを指定して、値を取得します
  echo $present['沖縄'];
  echo '<br>';
<?php
$sales = array('sun'=>10, 'mon'=>20, 'tue'=>30, 'wed'=>40, 'thu'=>50, 'fri'=>60,'sat'=>70);
echo '土日の合計は' . ( $sales['sat'] + $sales['sun'] ) . 'です';
値からキーを取得
  • 連想配列の値からキーを取得することもできます


取得したキー = array_search( 検索する値, 検索対象の連想配列変数名 );

<?php
  // 連想配列変数$priceの宣言と初期化
  $price = array ( '4'=>'500円', '1'=>'1000円', '2'=>'20円', '3'=>'50円');
  
  $code = array_search( '20円', $price );

  echo '20円のキーは' . $code . 'です。';

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


array()で配列を作成

  • 配列をよりシンプルに作成



$配列名 = array(値1,値2,値3・・・)

<?php 
  $city = array ( '東京', '名古屋', '京都', '大阪', '福岡' );
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>array()を使う</title>
</head>
<body>
<table border="2" width="120">
<tr><th>番号</th><th>都市名</th></tr>
<?php
  foreach ( $city as $id => $value ) {
    echo '<tr><td>' . $id . '</td><td>' . $value . '</td></tr>' . "\n";
  }
?>
</table>
</body>
</html>
array()でキーを使う
  • キーと値の組み合わせを指定できる



$配列名 = array("キー" => 値0,"キー" => 値1,"キー" => 値2・・・)

<?php 
$stock = array( 'みかん'=>80, 'いちご'=>60, 'りんご'=>22, 'もも'=>50,'くり'=>57 );
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>array()でキーを使う</title>
</head>
<body>
<table border="1" width="200">
<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>


広告を非表示にする