【独学】はじめてのWebプログラミング – 5.4 PHPの基礎④

配列

配列の書き方

配列とはデータの塊のことです。変数では、値を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」を付ける必要があります。これは覚えるしかありません。

本節の説明は以上になります。

トップページ <<前のカリキュラムへ戻る 次のカリキュラムへ進む>>

タイトルとURLをコピーしました