ガードブロッキング的ブログ

PHPのノート12 – 配列と連想配列のループ(foreach)

PHPのノート12 – 配列と連想配列のループ(foreach)

配列

例えば曜日のように一つのグループとして複数の変数を定義したい場合。

$youbi0 = 'Sun';
$youbi1 = 'Mon';
$youbi2 = 'Tue';

のように個別に定義できる。
しかしこのグループの内容が多い場合は記述が大変。
そこで使えるのが配列。

array

$youbi = array ('Sun','Mon','Tue');

のようにすると$youbiの配列’Sun’,’Mon’,’Tue’にはインデックスが振られており、
順番に$youbi[0],$youbi[1],$youbi[2]となる。

echo $youbi[0];

とするとSunが表示される。
$youbi0とか$youbi1ではないので記述に注意。
また配列の順番は0からスタートということも忘れずに。
[1]などを添字という。

echoとvar_dumpで配列を確認
note12_01

配列の個別修正

$youbiの0番目をSundayと修正する場合

$youbi[0] ='Sunday';

とすればいい。
配列0の内容がSundayに変わる。

echoとvar_dumpで配列を確認
note12_02

配列の追加(最後尾に追加)

$youbi[] = 'Wed';

とすると$youbi[3]にWedが代入される。

var_dumpで配列を確認
note12_03

配列の削除

unset($youbi[1]);

この例の場合配列2番目のMonが消える。
[1]をつけずに変数のみの場合は配列全てが消える。

var_dumpで配列を確認
note12_04

連想配列

必ずしも連番になっていない配列にインデックスを紐付け、キーとして取り出す。

$変数名 = array(キー => 内容,キー => 内容,…);

$items = array('a-1'=>'ガム','b-1'=>'チョコレート','c-3'=>'クッキー');
$items['a-1'];
 echo ($items);

この場合ガムを取り出すことができる。
キーは文字列なのでクォーテーションが必要。

$key = 'c-3';
 echo ($items[$key]);

キーに変数も使える。
この場合はクッキーを取り出す。

例)通常の連想配列

$sales = array ('tanaka'=>100,'suzuki'=>150,'yazaki'=>50);
echo $sales['tanaka'];
 var_dump($sales);

確認
note12_05

例)連想配列の内容にさらに連想配列

$sales2 = array (
 2000=>array('tanaka'=>100,'suzuki'=>150,'yazaki'=>50),
 2001=>array('tanaka'=>150,'suzuki'=>170),
 2002=>array('tanaka'=>200,'suzuki'=>80,'taira'=>500)
 );
echo $sales2[2002]['tanaka'];
 var_dump($sales2);

確認
note12_06

配列のループ

foreach

foreach(配列 as 取り出す要素の変数){
繰り返す内容
}

$is = array('北海道','青森県','岩手県');
 foreach($is as $i){
 print($i);
 }

配列$isから要素を取り出し、変数$iに代入して表示。

確認
note12_07

配列の要素数はcountでカウントできる。

単純にカウントして表示する場合。

echo count($is);

確認
note12_08

例えば上限が決まっていない商品をカウントし表示する場合などに使える。
仮に47の全都道府県を配列した場合、47個まで表示できる、といった使い方。

for($i=0; $i<count($is); $i++){
 echo $is[$i];
 }

確認
note12_09

まとめ
$youbi = array ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
 foreach ($youbi as $s){
 echo ($s);
 }

確認
note12_10

連想配列のループ

foreach($items as キー => 値){
繰り返す内容
}
のように使う場合が多い。

$sales = array ('tanaka'=>100,'suzuki'=>150,'yazaki'=>50);
foreach ($sales as $key => $value){
 echo $key . "'s sales is" . $value;
 }

確認
note12_11

注意事項

 

モバイルバージョンを終了