今日からはじめる!PHPの基本を理解(5回目)

前回までに学んだ、「変数」の1つである「配列」について5回目~6回目を使って、説明していきます。

プログラム初心者が最初につまづき易い場所なので、少し説明を多くやっていきたいと思います。

ここを見ている皆さんは4回目まで来れたので、この先も行けるはずです。

それでは、早速始めましょう!

配列の宣言と代入

配列(Array)とは変数の種類の1つです。

前回学んだ変数のことを思い出してみましょう。

<?php

$mozi = 'もじ';
$kazu = 6;

変数とは、値(数字、文字など)を入れておくための「箱」の様なものです。
1つの変数には、1つの値しか保持できません。

配列では、1つの変数の中に複数の値を入れることが出来ます。

<?php

$hairetsu = array();
$hairetsu[] = 10;
$hairetsu[] = 20;
print_r($hairetsu);

これを実行してみると、以下のようになります。

Array
(
    [0] => 10
    [1] => 20
)

$hairetsuが配列になっていると言うことが、実行結果の「Array」と言う文字とからもわかります。

では、各コードがなにをやっているのかを見ていきます。

3行目

$hairetsu = array();

$hairetsuと言う変数を、配列とし使えるように用意(宣言)しています。
array() と書いていますが、下記の内容でも同じです。

$hairetsu = [];

php5.4以降では、配列を宣言する際に array() と書かず、[] だけでよくなりました。
Javascriptなどでも、同じような記述が出来るので同じように覚えておくと、いいかもしれません。

4~5行目

$hairetsu[] = 10;
$hairetsu[] = 20;

4行目で、$hairetsuの中に10を入れています。
5行目では、$hairetsuに対して20を入れています。
配列に値を入れる際には、変数に「[]」を付けてあげることで値を入れていくことが可能です。

配列に値を入れる際に、以下の方法でも可能です。

array_push($hairetsu, 10);

6行目

print_r($hairetsu);

echoでは、配列をそのまま表示できないため、配列でも表示が可能なprint_rを利用し画面への出力を行っています。

出力された結果を見ると、[0] => 10、[1] => 20と表示されています。

配列の中に値を入れた場合、自動的に入れた順番(インデックス)が設定されます。
そしてここが、つまづき易いポイントですが、配列の順番は0から始まります。

そのため、$hairetsuに最初に入れた10に対しては、0と言うインデックス(0番目)が、2つ目に入れた20に対しては、1と言うインデックス(1番目)が設定されています。

4~5行目で2回にわけて値を入れましたが、最初から入れる値がわかっている場合には、下記のようにすることも可能です。

$hairetsu = [
    10,
    20,
];

配列の取得

先ほどのコードでは、配列への値の設定を行いました。

今度は、配列に入れた値を取得していきます。

<?php

$hairetsu = [
    10,
    20,
];

echo $hairetsu[0];
echo $hairetsu[1];

これを実行してみると、以下のようになります。

1020

改行されていないので、10と20が続けて表示されていますが、$hairetsuに入れられた10と20が出力されています。

配列の値を指定して取得したい場合には、インデックスを指定することで値を取り出すことが可能です。

指定の仕方は、8~9行目のように変数に「[取得したいインデックス]」を記述することで特定の値を取り出せます。
この例の場合、インデックスの0には10が、インデックスの1には20が入っているため、$hairetsu[0]を表示すると10が、$hairetsu[1]を指定すると20が出力されます。

では、以下のように存在しない配列を指定した場合に、どうなるかも見てみましょう。

echo $hairetsu[2];

この内容を10行目に追加し実行してみると、以下のようになります。

PHP Notice: Undefined offset: 2 in test.php on line 10

Undefined offset: 2と表示され、配列の中に「2」と言うインデックスはないと言うエラーが表示されます。

エラーとならない様に、配列から値を取得する際に存在しないインデックスを、参照しないよう気を付けましょう。

今回は、配列に値を入れる、入れた値を取り出すところをやってみました。

次回は配列の中身を操作していきます。

関連する記事