PHPで配列を使ってみよう
プログラミングの醍醐味の一つ、配列を使ってみましょう。
「配列」とは、一つの変数に複数の値を規則的に代入したものです。
普通の変数では、$animalに「イヌ」などの一つの値を代入しますが、配列を使うと$animalsという変数に「イヌ」「ネコ」「ゾウ」といった複数の値を規則的に格納できます。
配列は最初はちょっとわかりづらいかもしれませんが、慣れればとても便利です。
目次 Table of Contents
番号キーの配列を代入する
配列のもっとも基本的な形である、番号キーの配列を作成してみましょう。
配列に代入した値に、0から順に番号が振られるものになります。
配列への代入のしかた(書き方)には、以下の例のようにいくつかの方法があります。
$animals = array();
$animals = array('イヌ','ネコ','ゾウ','ライオン','キリン','カバ');
//コード1
$animals = array();
$animals = array ( 0 => 'イヌ', 1 => 'ネコ', 2 => 'ゾウ', 3 => 'ライオン', 4 => 'キリン', 5 => 'カバ', );
//コード2
$animals = array();
$animals[] = 'イヌ';
$animals[] = 'ネコ';
$animals[] = 'ゾウ';
$animals[] = 'ライオン';
$animals[] = 'キリン';
$animals[] = 'カバ';
//コード3
$animals = array();
$animals[0] = 'イヌ';
$animals[1] = 'ネコ';
$animals[2] = 'ゾウ';
$animals[3] = 'ライオン';
$animals[4] = 'キリン';
$animals[5] = 'カバ';
//配列のデバッグ
print_r($animals);
それぞれの記述の最初に$animals = array();という式がありますが、これは値がない(空っぽの)配列を作るという意味です。
すでに作成した変数に使うと、中身を空っぽにするということになります。
通常の変数と同じく、とくに配列を利用する宣言は事前に必要ありませんが、空っぽにし忘れて同じ名前の変数を使うとどんどん配列の中身が追加されてしまいますので注意しましょう。
配列を最初に練習するときは、print_r()でデバッグ(中身を確認する作業)をしながらやりましょう。
デバッグの結果を見ると、0という番号に「イヌ」、1という番号に「ネコ」・・・が対応していることがわかりますね。
配列の中身が決まっているときはコード0の書き方がわかりやすいです。
あとから値を追加するときはコード2の書き方で追加するとよいでしょう。
番号キーの配列の場合、コード1やコード3のような書き方をすることはあまりないかもしれませんが、番号キーと値の対応をしっかり記述した書き方になります。
番号をどこまで使ったか気にせず値の追加をするためには、コード2が便利です。
コード2・コード3でピンときた方もいらっしゃるかと思いますが、配列変数では、変数名[キー]という形で直接配列の任意の値を取得できます。
echo '<p>今度は'.$animals[1].'も飼ってみたいな。</p>';
今度はネコも飼ってみたいな。
配列の値を展開する
続いては、配列の値を順番に出力してみます。
配列を展開するにはforeach文でループさせるのが一般的ですが、番号キーの場合はfor文でのループもできます。
foreach($animals as $data){
echo $data.'<br />';
}
//コード5
foreach($animals as $key => $data){
echo $key.':'.$data.'<br />';
}
//コード6
$animals_count = count($animals);
for($i = 0; $i < $animals_count; $i++){
echo $i.':'.$animals[$i].'<br />';
}
イヌ
ネコ
ゾウ
ライオン
キリン
カバ
【コード5】
0:イヌ
1:ネコ
2:ゾウ
3:ライオン
4:キリン
5:カバ
【コード6】
0:イヌ
1:ネコ
2:ゾウ
3:ライオン
4:キリン
5:カバ
コード4・コード5のforeach文は、配列の展開のお決まりパターンとして覚えておきましょう。
配列の値だけ必要なときはコード4で、キー番号も必要な時はコード5のような書き方をします。
「as」は日本語で「~として」ですので、$animalsを「as以下の形で」ループ処理するという覚えかたで十分だと思います。
コード6ではfor文を使ってループさせています。
配列のキーを0から順番に加算することで出力しています。
count()を使うことで配列の値の数を取得できますので、for文の場合は合わせて使うとよいでしょう。
注意点として、キー番号が必ず連続しているときでないと使えないということだけ覚えておきましょう。
配列のデバッグ方法
配列のデバッグ方法は前述のprint_r()のほか、var_dump(),var_export()関数があります。
それぞれ違いがあるので、ざっと抑えておきましょう。
$animals = array('イヌ','ネコ','ゾウ','ライオン','キリン','カバ');
print_r($animals);
var_dump($animals);
var_export($animals);
Array ( [0] => イヌ [1] => ネコ [2] => ゾウ [3] => ライオン [4] => キリン [5] => カバ )
【var_dump()】
array(6) { [0]=> string(6) "イヌ" [1]=> string(6) "ネコ" [2]=> string(6) "ゾウ" [3]=> string(12) "ライオン" [4]=> string(9) "キリン" [5]=> string(6) "カバ" }
【var_export()】
array ( 0 => 'イヌ', 1 => 'ネコ', 2 => 'ゾウ', 3 => 'ライオン', 4 => 'キリン', 5 => 'カバ', )
シンプルで見やすいのはprint_r()です。
var_dump()を使うと、値のデータ型やバイト数などの詳しい情報を含んだデバッグができます。
var_export()はPHPスクリプトにそのまま利用できる形での出力となります。
百聞は一見に如かず、ということで前述の【コード1】を見てみると、配列の代入時の書き方で出力されていることがわかりますね。
コメントフォーム
自分の勉強にもなりますので、コメントいただけるとうれしいです。