【PHP講座04】配列とは?使い方を解説!

PHP講座

前回は、変数についての解説を行った。

また、文字列の連結についても少し触れた。

特に変数今回解説する内容の基になっているので、先にしっかり理解しておこう。

前回の記事は以下だ。

【PHP講座03】変数とは?使い方を解説! | Shino’s Mind Archive

さて、今回は変数を拡張して、配列というものをご紹介する。

まだ現時点では効力は薄いが、後で解説する繰り返し処理と非常に相性がいい

また、実はアクセス時にデータを受け取る処理周りでもこの配列の知識が必要になる

シノ
シノ

アクセス時のデータ受け取りは次回解説するよ!

それまでに配列の基礎を固めておこう!

スポンサーリンク

配列

配列とは

前回の変数もそうだったが、配列PHPに限った話ではない

なので、先に配列という考え方を解説しよう。

配列とは、簡単に言ってしまうと、変数の箱を一つの名前で複数管理できるものだ。

箱が複数入った箱が配列、という認識でいいだろう。

この、配列の中に入っている箱一つ一つ要素と呼ぶ。

アクセスするときは、配列名と、何番目のデータか、という値を指定する。

この値の方を添え字と呼ぶので、これも覚えておこう。

また、配列の要素は、通常0からカウントする

つまり、5個の要素を持つ配列の添え字は0から4になるので、気を付けておいて欲しい。

PHPの配列の使い方

では、PHPの話に入っていこう。

変数と同じように、先に定義をしてしまおう。

配列を定義する書き方は以下の通り。

$arr = [要素0, 要素1, ...];

各要素には、整数や小数、文字列など、変数に入れることができるものは何でも入れられる

もっと言うとこの配列も要素として入れられるのだが…そこまでやってしまうとややこしくなるのでいったんやめておこう。

そして、特定の要素を取り出すときは、以下のように書く。

$arr[添え字]

これで、添え字のところに入っている要素を取り出すことができるのだ。

ちょっと、具体例で見ていこう。

以下のサンプルソースを見て欲しい。

<?php
    $arr = [10, 20, 30, 40, 50];
    echo $arr[0];
?>

2行目で、5つの要素を持つ配列$arrを定義している。

そして、3行目で、0番目の要素を出力しているのだ。

0番目に入っている10が、結果として画面に表示される。

添え字の数字を0から4まで動かして、しっかりそれぞれの結果が出てくるか確認してみよう。

もう一つ、今度は文字列を入れてみよう。

sample07.phpを、以下のように直してみる。

<?php
    $arr = ["要素1", "要素2", "要素3", "要素4", "要素5"];
    echo $arr[0];
?>

これでアクセスすると、今度は「要素1」と表示されるはず。

こちらも、添え字を0から4まで動かしてみよう。

なお、値の書き換えも変数と同じような形で行うことができる

sample07.phpを再度修正し、今度は以下のように書き直してみよう。

<?php
    $arr = ["要素1", "要素2", "要素3", "要素4", "要素5"];
    $arr[0] = "修正1";
    echo $arr[0];
?>

3行目で、0番目の要素の中身を変更している。

出力は、しっかり変更した後の「修正1」になっているはずだ。

もう一つ解説を。

先に定義しておいたけど、配列に要素を追加したい、となったとしよう。

これが、PHPでは簡単にできる。

配列の最後に新しい要素を追加するときは、以下のように書くことができる。

$arr[] = 要素の中身;

これも実際に使ってみよう。

sample07.phpをまたまた修正し、今度は以下のように。

<?php
    $arr = ["要素1", "要素2", "要素3", "要素4", "要素5"];
    $arr[] = "要素6";
    echo $arr[5];
?>

今度は3行目で、配列$arrの最後に要素6という文字列を追加している。

もちろん、添え字もそのまま次のものになるので、4行目の出力で追加した「要素6」という文字列が表示されているはずだ。

注意点

ここまで解説してきたが、添え字を指定するときに注意点がある。

何かというと、使う場合はすでに用意された範囲で指定してあげよう、ということだ。

例えば、添え字が0から4の5つの要素を持つ配列$arrで、$arr[5]を表示しようとしてしまうと、Noticeという警告文が表示されてしまう。

Notice: Undefined offset: (アクセスしようとした添え字) in (ファイル名) on line (アクセスした行)

こんな文が出たときは、その行で範囲外の添え字にアクセスしていないか確認してみよう。

連想配列

上で解説してきた配列は、添え字が0から始まる数字だった。

実は、ここに文字列を指定することもできる

その、文字列を使ってアクセスできる配列のことを連想配列と呼ぶ。

こちらも、定義方法から見ていこう。

PHP連想配列を書く場合は、以下のように定義する。

$arr = ["キー1"=>要素1, "キー2"=>要素2, ...]

要するに、要素だけ書いていた部分を、「(添え字にしたい文字列)=>(要素の中身)」という書き方に変えてあげればいい。

使う場合は、なんとなく予想がつくと思う。

添え字が、そのまま文字列に変わるだけだ。

上の例でいくと、以下の形で要素1が取り出せる。

$arr["キー1"]

こちらも、具体的な例を見ていこう。

以下のように組んでみる。

<?php
    $arr = ["no"=>1, "name"=>"携帯電話", "price"=>30000];
    echo $arr["no"];
?>

こうすると、noという添え字に入っている要素1が出力される。

他にも、添え字の文字列をnamepriceに変更して、それぞれ出力されるか確認してみよう。

そして、こちらでも要素の追加を見ていこう。

やはり簡単で、以下のようにすればいい。

$arr[(新しいキー)] = 新しい要素;

こうすれば、新しいキーを添え字とした要素が追加できる

上のsample08.phpを修正して、以下のように変えてみる。

<?php
    $arr = ["no"=>1, "name"=>"携帯電話", "price"=>30000];
    $arr["comment"] = "最新モデル";
    echo $arr["comment"];
?>

こうすると、新しく追加した「最新モデル」という文字列が表示されるはずだ。

オマケ:配列などの中身を確認するvar_dump

このように配列を使っていると、どんな添え字にどんな値が入っているか確認したい場合がよくある。

そんなときに使えるものを一つご紹介しよう。

var_dumpという関数だ。

関数という言葉はまた後ほど解説するので、分からない場合はとりあえず何か処理してくれるもの、という認識で大丈夫だ。

こいつの使い方は以下の通り。

var_dump(配列など);

後ろに小括弧をつけて、中に確認したい配列などを入れる。

など、と書いたのは、変数でも使えるからだ。

例えば、以下のように書いたとしよう。

<?php
    $arr = ["no"=>1, "name"=>"携帯電話", "price"=>30000];
    $arr["comment"] = "最新モデル";
    var_dump($arr);
?>

sample08.phpの出力をvar_dumpに変えてみた。

こうすると、出力は以下のようになる。

array(4) { ["no"]=> int(1) ["name"]=> string(12) "携帯電話" ["price"]=> int(30000) ["comment"]=> string(15) "最新モデル" }

…一行で出力されるのでちょっと見づらい。

見やすく改行を加えたものが以下だ。

array(4) {
    ["no"]=> int(1)
    ["name"]=> string(12) "携帯電話"
    ["price"]=> int(30000)
    ["comment"]=> string(15) "最新モデル"
}

先頭のarrayというのは、これは配列だよというもの。

後ろの括弧に、要素数が入っている。

そこから中括弧で、具体的な中身が表示されている。

この中で、どんな添え字があって、その中にどんな要素が入っているかが一目でわかる

intというのが整数の型、stringというのが文字列の型を表している。

この型というのが、前回解説した変数の型だ。

そして、intの後ろの括弧には実際に入っているデータが、stringの後ろの括弧にはデータのバイト数、そしてさらに後ろに実際のデータが出力されている。

エラーが起きた場合など、これで確認することが非常に多いので、覚えておくといいだろう。

おわりに

今回は、配列について色々と解説をしてきた。

まだ効力が薄いので、なかなか使いどころが分からないかもしれない。

しかし、進めていくうちに色々な使い方が出てくるので、是非慣れておいて欲しい。

さて、次回はアクセス時に送られてきたデータを受け取ってみよう

ここまでの知識があれば、一旦受け取るまでは理解できるはずだ。

ここからようやくPHPらしくなってくるので、楽しみにしておいてほしい。

コメント

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