配列
配列の書き方
配列とはデータの塊のことです。変数では、値を1つまでしか格納することができませんが、配列を使うことで、複数のデータを一度に格納することができます。
例えば、以下のように書きます。
htdocs/PHP/test.php
<?php
$data = array('山田','愛媛','20歳'); // カンマ区切りで、一つ目のデータ,二つ目のデータ,三つ目のデータ
echo $data[0];
echo '<br>';
echo $data[1];
echo '<br>';
echo $data[2];
?>
配列は「array(一つ目のデータ,二つ目のデータ,三つ目のデータ,…)」のように、array()の中にカンマ区切りで複数のデータを書きます。それらが「データの塊」となり、そのデータの塊を変数$dataに格納しています。
データを取り出すときは、$data[0](=一つ目のデータ)、$data[1](=二つ目のデータ)、$data[2](=三つ目のデータ)すなわち「$date[要素番号]」のように書きます。
プログラムでは「0起算」が慣例です。よって、一つ目のデータを取り出すときは要素番号は0を指定するのです。
配列は以下のように書くこともできます。
htdocs/PHP/test.php
<?php
// 配列はこのように書くこともできる
$data[] = '山田'; // 一つ目のデータ
$data[] = '愛媛'; // 二つ目のデータ
$data[] = '20歳'; // 三つ目のデータ
// 同じ結果になる
echo $data[0];
echo '<br>';
echo $data[1];
echo '<br>';
echo $data[2];
?>
「$data = array(‘山田’,’愛媛’,’20歳’);」と書いた場合と全く同じです。
どちらで書いてもOKです。
配列のデータ変更
配列のデータを変更する場合は、以下のように書きます。
htdocs/PHP/test.php
<?php
$data = array('山田','愛媛','20歳');
echo $data[0];
echo '<br>';
echo $data[1];
echo '<br>';
echo $data[2];
echo '<br><br>';
// 二つ目のデータを変更
$data[1] = '北海道';
echo $data[0];
echo '<br>';
echo $data[1];
echo '<br>';
echo $data[2];
?>
「$data[1] = ‘北海道’」のように、変更したい要素番号を指定して、値を格納し直します。
連想配列
連想配列の書き方
連想配列は、「キー」と「値」のセットでデータをもつことができます。
例えば、以下のように書きます。
htdocs/PHP/test.php
<?php
$data = array(
// 配列のデータを、「キー => 値」のセットで格納することができる
'名前' =>'佐藤',
'住所' =>'愛知',
'年齢' =>'30才',
);
echo $data['名前']; // キーを指定することで値を取り出すことができる
echo '<br>';
echo $data['住所'];
echo '<br>';
echo $data['年齢'];
?>
配列と同じように「array()」と書くところまでは同じですが、データの書き方が異なります。連想配列の場合、「キー => 値」で1セットのデータとして書き、このデータをカンマ区切りで複数書くことができます。
データを取り出すときは、$data[‘キー’]のようき書くと、そのキーに対応する値を取得することができます。
連想配列のデータ変更
連想配列のデータを変更する場合は、以下のように書きます。
htdocs/PHP/test.php
<?php
$data = array(
'名前' =>'佐藤',
'住所' =>'愛知',
'年齢' =>'30才',
);
echo $data['名前'];
echo '<br>';
echo $data['住所'];
echo '<br>';
echo $data['年齢'];
echo '<br><br>';
// キー「住所」の値を変更
$data['住所'] = '北海道';
echo $data['名前'];
echo '<br>';
echo $data['住所'];
echo '<br>';
echo $data['年齢'];
?>
二次元配列
二次元配列の書き方
二次元配列とは、配列の中にもう一つ配列がある配列のことです。
例えば、以下のように書きます。
htdocs/PHP/test.php
<?php
$data = array( // この配列の中に
// さらにこれらの配列がある
array('佐藤', '東京', '20歳'), // 0番目のデータ(この場合、配列)
array('加藤', '愛知', '30歳'), // 1番目のデータ(この場合、配列)
array('伊藤', '大阪', '40歳') // 2番目のデータ(この場合、配列)
);
echo $data[0][0]; // 0番目の配列の、0番目のデータ(='佐藤')という意味
echo '<br>';
echo $data[0][1]; // 0番目の配列の、1番目のデータ(='東京')という意味
echo '<br>';
echo $data[0][2]; // 0番目の配列の、2番目のデータ(='20歳')という意味
echo '<br><br>';
echo $data[1][0]; // 1番目の配列の、0番目のデータ(='加藤')という意味
echo '<br>';
echo $data[1][1]; // 1番目の配列の、1番目のデータ(='愛知')という意味
echo '<br>';
echo $data[1][2]; // 1番目の配列の、2番目のデータ(='30歳')という意味
echo '<br><br>';
echo $data[2][0]; // 2番目の配列の、0番目のデータ(='伊藤')という意味
echo '<br>';
echo $data[2][1]; // 2番目の配列の、1番目のデータ(='大阪')という意味
echo '<br>';
echo $data[2][2]; // 2番目の配列の、2番目のデータ(='40歳')という意味
?>
配列の中に、連想配列を並べることもできます。
htdocs/PHP/test.php
<?php
$data = array( // この配列の中に
// さらにこれらの配列がある
array('名前' => '佐藤', '住所'=> '東京', '年齢' => '20歳'), // 0番目のデータ(この場合、連想配列)
array('名前' => '加藤', '住所'=> '愛知', '年齢' => '30歳'), // 1番目のデータ(この場合、連想配列)
array('名前' => '伊藤', '住所'=> '大阪', '年齢' => '40歳') // 2番目のデータ(この場合、連想配列)
);
echo $data[0]['名前']; // 0番目の配列の、キー「名前」の値(='佐藤')という意味
echo '<br>';
echo $data[0]['住所']; // 0番目の配列の、キー「住所」の値(='東京')という意味
echo '<br>';
echo $data[0]['年齢']; // 0番目の配列の、キー「年齢」の値(='20歳')という意味
echo '<br><br>';
echo $data[1]['名前']; // 1番目の配列の、キー「名前」の値(='加藤')という意味
echo '<br>';
echo $data[1]['住所']; // 1番目の配列の、キー「住所」の値(='愛知')という意味
echo '<br>';
echo $data[1]['年齢']; // 1番目の配列の、キー「年齢」の値(='30歳')という意味
echo '<br><br>';
echo $data[2]['名前']; // 2番目の配列の、キー「名前」の値(='伊藤')という意味
echo '<br>';
echo $data[2]['住所']; // 2番目の配列の、キー「住所」の値(='大阪')という意味
echo '<br>';
echo $data[2]['年齢']; // 2番目の配列の、キー「年齢」の値(='40歳')という意味
?>
二次元配列のデータ変更
二次元配列のデータを変更する場合は、以下のように書きます。
htdocs/PHP/test.php
<?php
$data = array(
array('佐藤', '東京', '20歳'),
array('加藤', '愛知', '30歳'),
array('伊藤', '大阪', '40歳')
);
echo $data[0][0];
echo '<br>';
echo $data[0][1];
echo '<br>';
echo $data[0][2];
echo '<br><br>';
// 0番目の配列の、1番目のデータを変更
$data[0][1] = '青森';
echo $data[0][0];
echo '<br>';
echo $data[0][1];
echo '<br>';
echo $data[0][2];
?>
二次元配列(配列の中には連想配列)のデータを変更する場合は、以下のように書きます。
htdocs/PHP/test.php
<?php
$data = array(
array('名前' => '佐藤', '住所'=> '東京', '年齢' => '20歳'),
array('名前' => '加藤', '住所'=> '愛知', '年齢' => '30歳'),
array('名前' => '伊藤', '住所'=> '大阪', '年齢' => '40歳')
);
echo $data[0]['名前'];
echo '<br>';
echo $data[0]['住所'];
echo '<br>';
echo $data[0]['年齢'];
echo '<br><br>';
// 0番目の連想配列の、キー「住所」の値を変更
$data[0]['住所'] = '青森';
echo $data[0]['名前'];
echo '<br>';
echo $data[0]['住所'];
echo '<br>';
echo $data[0]['年齢'];
?>
foreach
foreachは、ループ処理によって、配列や連想配列に入っているデータを一つひとつ取り出すことができます。
配列
配列の場合、例えば以下のように書きます。
htdocs/PHP/test.php
<?php
$values = array('佐藤','東京','20歳');
foreach($values as $value){
echo $value;
echo '<br>';
}
?>
「foreach($values as $value){ 任意の処理 }」の箇所では、以下のような処理が行われます。
①配列$valuesの一つ目の値「佐藤」を取り出し、変数$valueに格納される。
②{ 任意の処理 }が実行される。
③foreachの先頭に戻る。
④配列$valuesの二つ目の値「東京」を取り出し、変数$valueに格納される。
⑤{ 任意の処理 }が実行される。
⑥foreachの先頭に戻る。
⑦配列$valuesの三つ目の値「20歳」を取り出し、変数$valueに格納される。
⑧{ 任意の処理 }が実行される。
⑨配列$valuesの値をすべて取り出したので、foreachを抜ける。
for文と似ていますね。
連想配列
連想配列の場合、例えば以下のように書きます。
htdocs/PHP/test.php
<?php
$values = array(
'名前' =>'佐藤',
'住所' =>'東京',
'年齢' =>'20才',
);
foreach($values as $key => $value){
echo $key.' : '.$value;
echo '<br>';
}
?>
「foreach($values as $key => $value){ 任意の処理 }」の箇所では、以下のような処理が行われます。
①配列$valuesの一つ目のデータである、キー「名前」と値「佐藤」を取り出し、変数$keyと$valueに格納される(キーは$keyに、値は$valueに格納される)。
②{ 任意の処理 }が実行される。
③foreachの先頭に戻る。
④配列$valuesの二つ目のデータである、キー「住所」と値「東京」を取り出し、変数$keyと$valueに格納される。
⑤{ 任意の処理 }が実行される。
⑥foreachの先頭に戻る。
⑦配列$valuesの三つ目のデータである、キー「年齢」と値「20才」を取り出し、変数$keyと$valueに格納される。
⑧{ 任意の処理 }が実行される。
⑨配列$valuesの値をすべて取り出したので、foreachを抜ける。
foreachの別の書き方
foreachは以下のように書くこともできます。
htdocs/PHP/test.php
<?php
$values = array('佐藤','東京','20歳');
foreach ($values as $value) :
echo $value;
echo '<br>';
endforeach
?>
ここまでは、実行したい命令は波括弧{}で囲ってきました。
これに対し、上記のようにコロン「:」で記述することもできるのです。
この場合、最後は「endforeach」を付ける必要があります。これは覚えるしかありません。
本節の説明は以上になります。