Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

  1. Home
  2. PHPBeginner - What are Arrays?

What are Arrays? - Japanese Only

みなさまどうもこんにちは。いかがお過ごしでしょうか。

さて、やってまいりました『配列』(はいれつ)の項目でございます。こちらも『変数』と同じく初心者の壁になりがちな項目です。ちょっと難しいかもしれませんが頑張っていきましょう。

まず「『配列』ってなにそれ?美味しいの?」って話なんですが、『配列』とは『連番が付けられた変数の集合体』です。「変数がグループ化されている」ということと「連番が付けられている」っていうのがミソです。もちろん食べ物ではございません。

なんのこっちゃってお話なんですが、例えば社員さんの名前を保存してその人数を出力したい、といった処理を構築する場合は社員さんの名前が入った変数をまとめてしまえればスマートな処理が構築できそうですよね。そんな時に『配列』が使用されます。

『配列』の具体的な使い方は次の項目で紹介したいと思うので今回は『配列』の定義方法をやっていきましょう。

一般的なプログラム言語の『配列』には連番を添字とする『添字配列』(数値添字配列)と特定の文字列を添字とする『連想配列』(ハッシュ)の2種類があります。

PHPも『添字配列』と『連想配列』が両方用意されているのですが、PHPの内部的には『同じもの』として扱われています。

他の言語では『添字配列』と『連想配列』で、定義方法や使用方法など厳密に分けられている場合が多いのですが、PHPではちょっと違う感じになっちゃってますね。

なので通常の『添字配列』の定義方法で『連想配列』も定義できてしまったりします。他言語に精通している方だとちょっと混乱してしまうかもしれませんので、そこは注意するようにしてください。

ちなみに普通に『配列』と言ったら『添字配列』のことを指すのが一般的ですので覚えておきましょう。

PHPでの『配列』の定義方法として古い時代からあるのが『array()』を使って実装する方法です。ちなみに『array』は「アレイ」って読みます。「あらい」じゃないですのでご注意を。というわけで以下が『array()』を使用した配列の作成方法です。

<?php
$arr = array();

『arr』に『array()』が代入されていますね。これで『arr』が配列として定義されたので配列『arr』は連番付きで色々なデータを入れることができるようになりました。

ちなみに配列に付けられた名前のことは『配列名』といいます。まあそのままなんですが覚えておいてください。

では配列の『0』番目に文字列『miku』を代入してみましょう。このような記述になります。

<?php
$arr = array();
$arr[0] = 'miku';

上記のように『配列名』の後に『[]』(角括弧、またはブラケット)を書き、そこに数字を入れてそこに好きな値を代入してあげます。これだけでOKです。

と、ここで注意点です。「『0』番目ってなんやねん!」って思った方いらっしゃると思います。なんとプログラミングにおいての連番は『0』から数え始めます。『1』からではございません。これは他のプログラム言語でも共通の事柄ですので覚えておいてください。

そして『配列』での添字(『0』番目とか『1』番目とか)のことを『インデックス』といいます。『インデックス番号』とも呼ばれますね。こちらも覚えておきましょう。

そして『array()』の『()』の中に入れたい値を『,』(コンマ、またはカンマ)区切りで記述していくと最初から値が代入された『配列』を生成することができます。以下のような感じですね。

<?php
$arr = array('miku', 'IA');

上記のサンプルでは配列『arr』が定義され、文字列『miku』と文字列『IA』が入ったって感じですね。

数値を入れたいときは以下のような記述になります。

<?php
$arr = array(100, 200);

PHP5.4から配列の定義に『array()』だけではなく『[]』が使用できるようになりました。以下のような感じですね。

<?php
$arr = []; // 『$arr = array();』と記述していることと同じです。

配列生成と同時に値を入れたい場合は『[]』の中に『,』区切りで値をいれていけばOKです。

<?php
$arr = ['miku', 'IA']; // 『$arr = array('miku', 'IA');』と記述していることと同じです。

『[]』をちょこんと書くだけで配列を生成できるのでとっても楽ちんです。最近では『[]』を使われるプログラマーさんがほとんどですのでこの記法も覚えておきましょう。

さて、これを出力させて確認してみましょう、といきたいのですがその前にまたもや注意点です。

これまでの記事で、変数の中身を出力するときに『echo』とか使っていましたよね。実は『echo』は配列の中身を展開して出力してくれません。『print』も然りです。ちょっと試してみましょう。先ほどのサンプルで定義した『配列』を『echo』を使って出力させてみます。

<?php
$arr = array('miku', 'IA');

echo $arr;

これを実行させると以下となります。(PHPのエラーレベルが『Off』の場合)

Array

「Array」ってちょこんと出力されているだけですね。こんな感じで『echo』では『配列』の中身を出力してくれません。

『配列』の中身が確認できない状態での開発になると中々手厳しいです。「ふぇぇ...はいれつのなかみをみたいだけなのに...どうすればいいのぉ...」となってしまいますよね。そこで登場するのが前の記事で紹介した『var_dump()』ちゃんです。先ほどの処理を『var_dump()』ちゃんで書き換えてみましょう。

<?php
$arr = array('miku', 'IA');

var_dump($arr);

これを実行するとこうなります。

array(2) {
  [0]=>
  string(4) "miku"
  [1]=>
  string(2) "IA"
}

めちゃめちゃ細かく出力してくれてます。これで配列の中身を確認しつつ開発を進めることができますね。

こんな感じで『var_dump()』ちゃんは聞いてないことまで色々と細かく教えてくれるので、何かの中身を確認したいときは『var_dump()』ちゃんを使用すると良いです。型までしっかり出力してくれるので『var_dump()』ちゃんは開発者の味方です。

では『var_dump()』ちゃんで出力した上記の表記の意味を見て行きましょう。まず最初の『array(2)』というところは「2つの要素を持った配列ですよー」って感じですね。配列に含まれたひとつひとつのデータを『要素』といいます。

続いての『[0]=> string(4) "miku"』ってところに注目です。ここで連番が登場していますね。これは「『0』番目の要素の値は4文字の文字列『miku』ですよー」って感じになります。『[1]=> string(2) "IA"』の部分も同じような感じで読み取って頂ければOKです。

さて、これで『配列』の定義と確認のための出力方法が終わったので、続いて配列の要素の取り出し方についてやっていきましょう。

配列のそれぞれの要素の値を取り出すには『[]』を使用します。先ほどのサンプルの『0』番目の要素を取り出すときは以下のような感じです。

<?php
$arr = array('miku', 'IA');

echo $arr[0];

先ほどの代入のときと大体同じですね。こんな感じで『[]』の中に取り出したいインデックス番号を入れればOKです。これを実行させると以下のテキストが返ってきます。

miku

バッチリですね。

ちなみに配列を丸ごと出力させるのではなく、配列の各要素をそれぞれ出力するような形ならば『echo』、または『print』とかを使ってOKです。配列とかを丸ごと出力して中身を確認するときとかは『var_dump()』、配列の各要素を普通に文字として出力させたい場合は『echo』、または『print』とかになります。ここがちょっとごっちゃになりがちなので注意して下さい。

というわけで長くなってきたので一旦記事を切ります。次の記事では『配列』の少しトリッキーな代入方法と注意点とかをみていきましょう。ではではこの辺で。失礼致します。

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .