Pages

Subscribe:

2011-10-14

PHPの基礎~配列

PHPの基礎もそろそろ後半戦です。
今回からは「配列」に関してまとめていこうと思います。

しばらく構文に関しての話が続きましたが、配列は変数のようなひとつの概念に
なります。配列だけでどうこうというよりは、今後勉強する構文と組み合わせて
使っていくようになります。


配列とは

上記のリンク先では少し難しく説明されていますが、
配列を一言で説明するならば、「値がたくさん入る変数」と言ったところでしょうか。
以前変数を値を入れる箱に見立てて説明しました。
配列はひとつの箱が番号で区切られていて、そこに順番に値を入れることができる
もので、 アパートの部屋番号のようなイメージです。
「$a」アパートの「0」号室には「青」さんが住んでいるという感じ。

基本的に番号は「0」から割り振られ、配列の名前が「$a」だとしたら、
「0番目」は「$a[0]」と表記されます。
意味はそのまま、「$aの0番目」です。
値をたくさん入れられるけれどそのままでは使いようがないので、
ひとつずつ番号で区別していると考えると分かりやすいかと思います。

配列の定義

変数を定義するときは変数の名前を決め、「=」でつないで値を書けばよかったの
ですが、配列は入る値が複数あるためまずはそれが配列であることを
明示しなければなりません。

そこで使用されるのが「array」です。
配列の名前を決め(変数と同じ方法で決めることができます)、
「=(代入演算子)」のあとにarrayを書き、
続けて「( )」の中に入れたい値を書いていきます。
値は「’ ’(シングルコーテーション)」か「” ”(ダブルコーテーション)」でくくり、
「,(カンマ)」で区切っていきます。
このとき目には見えませんが左から順番に0番目から番号が振られています。
実際に書いてみると以下のようになります。
<?php
$color = array('赤','青','黄');
?>
「$color」という配列に赤、青、黄という値を入れました。

配列の値の表示

変数と同じで定義しただけではブラウザに表示することはできないので、
「echo(またはprint)」を利用します。
変数と違うのは、その配列の何番目なのかを明示しなければならないことです。
この何番目かを示すための表記は先ほども少し触れましたが、
「$a[0]」のように「[ ]」で数字を囲むことで表現でき、
これは添字と呼ばれます。

添字とは

上記のリンク先の説明にもありますが、添え字は「キー(key)」と呼ばれる
こともあります。また、それに呼応して配列に入る値のことを
「バリュー(value)」と呼んだりもします。

先ほど定義した配列を表示させるためには以下のように書きます。
<?php
$color = array('赤','青','黄');

echo $color[0].$color[1].$color[2];
?> 
左から定義した順に、番号がついていることが分かると思います。
配列の中の値を番号を指定することで取り出して使うことができるのです。
また、for文を使って配列を表示させることもできます。
<?php
$color = array('赤','青','黄');
for($i = 0;$i < 3; $i++){
    echo $color[$i];
}
?>

配列の定義その2

配列の定義の仕方は他にもあります。
先ほど使用した「array」を使わず、「[ ]」を付けてひとつずつ配列を定義する
方法です。
これも先に書いた方から順番に番号が振られていきます。
<?php
$color[] = '赤';
$color[] = '青';
$color[] = '黄';
?>

配列の定義その3

もうひとつあります。
その2で紹介した方法と似ているのですが、
最初から番号を指定して定義する方法です。
<?php
$color[0] = '赤';
$color[1] = '青';
$color[2] = '黄';
?>
この場合、番号が決まっているので順番通りに書かなくても大丈夫です。
ただ、やみくもに順序を変えるのはあとあと混乱のもとになるので、
理由がないなら避けたほうが無難です。


基本的に、配列は都道府県など関連性のあるデータをまとめて格納し
さらに別のファイルにしておいて必要なときに呼び出して使ったりするといった
使い方をされます。
今回例では値を3つしか入れませんでしたが、
もちろんもっとたくさん入れることができます。

データベースを扱うようになると頻繁に使用されるようになりますが、
頭では理解しているつもりでも、感覚が掴みにくいものだという印象が
配列とその周辺にはあります。
何度も使っているうちに何となく理解できてくるような。
これはあくまでも私の感想ですが…

しばらく配列関係の話が続きます。

0 件のコメント:

コメントを投稿