PHP初心者がぶつかる壁の1つとして有名なのが、「配列」という概念です。
いきなり「これが配列だ!」と言われてプログラムのコードを書かされても、何だかよく分からないのは当然ですよね。
こういう場合は、「日常の具体的な例と紐付けて理解する」というのが有効です。
今回はPHPの配列を、衣装ケースに例えて説明してみたいと思います。それとともに、配列操作を行う際のコード例も豊富に紹介していきますよ。
PHPを学ぶ過程で配列って何?と疑問に思った方や配列の学習に挫折した・・・という方はもちろん、配列の操作方法をどう書くのか忘れたのでパッと確認したいという方も、ぜひこの記事を読んでみてくださいね。
目次
PHPの配列は多段の衣装ケースのようなもの!?
一体、配列とは何なのでしょうか。衣装ケースに例えて説明してみましょう。
ある日、あなたは子供たちそれぞれの服を入れるための衣装ケースを買いました。
こんな衣装ケースを3つです。
そして、各ケースを各子供の部屋にそれぞれ置いておくことにしました。
その夜。洗い終わった衣服を各衣装ケースに入れるため、あなたは3つの部屋を順に訪れました。
3つの衣装ケースに衣服を入れ終わる頃には、あなたは疲れ果てていました。
「ああ、3つの部屋を全部回るなんて大変・・・。何かよい方法はないかしら。」
色々と考えたあなたは、よいアイデアを思いつきました。
あなたは、3つの衣装ケースを全てリビングに集め、縦に積み重ねました。そして、各ケースにはどの子供が使うものか分かるように目印を付けました。
「これで動き回る手間が省けていいわね!」
いかがでしたか?
上のお話では、
各部屋に置いた状態の各衣装ケース:普通の変数
リビングに集めた状態の5つの衣装ケース:配列
という例えをしています。
つまり、「バラバラだと扱いづらいものを1つにまとめてアクセスしやすくしたもの」が配列なのです。
変数と配列の違い、そして配列とはどのようなものか、イメージしていただけたのではないでしょうか。
PHPの配列では変数と同じ「$」記号を使う
さて、配列のイメージがわいてきたところで、早速配列の操作を説明・・・といきたいところですが、その前に配列で使う記号を説明しておきましょう。
PHPで配列を扱う際には、変数と同じ「$」という記号を使用します。
1 2 3 4 5 |
/* 変数の作成 */ $x = 'one'; /* 配列の作成 */ $y = ['one', 'two', 'three']; |
上の例では、xという名前の変数とyという名前の配列を作成しています。
どちらも「$」記号を使用しているので、一見すると判別しづらいですよね。
「$」記号が出てきた際には、それが変数と配列のどちらを表すのかその都度確認するようにしましょう。
PHPの配列における基本操作
配列のイメージが沸いてきたところで、PHPで配列を扱う際の基本操作をみていきましょう!
基本的なものから順に説明していきますね。
配列の作成
まずは配列の作成です。新しい多段衣装ケースを用意するということですね。
配列を作成するには、以下の2通りの方法があります。
1 2 3 4 5 6 |
/* 配列の作成 */ /* []を使用 */ $children = ['taro', 'ziro', 'saburo']; /* array()を使用 */ $children = array('taro', 'ziro', 'saburo'); |
上は[]を使用する方法、下はarray()関数を使用する方法です。
どちらでも同じなので、自分の書きやすい方法を選択してくださいね。
配列の先頭に要素を追加
続いて、配列の先頭に要素を追加する操作をご紹介します。多段衣装ケースの一番上に新しいケースを重ねましょう。
この操作では、array_unshift()関数を使用します。
1 2 3 4 5 6 7 8 |
/* 配列を作成 */ $children = array('taro', 'ziro', 'saburo'); /* 配列の先頭に要素を追加 */ array_unshift($children, 'hanako'); /* 配列の要素を表示 */ print_r($children); |
【実行結果】
1 2 3 4 5 6 7 |
Array ( [0] => hanako [1] => taro [2] => ziro [3] => saburo ) |
多段衣装ケースの一番上に、ハナコちゃんの衣装ケースが追加されましたね!
配列の最後に要素を追加
次は、配列の最後に要素を追加します。多段衣装ケースの一番下に新しいケースを挿入しましょう。
1 2 3 4 5 6 7 8 |
/* 配列を作成 */ $children = array('taro', 'ziro', 'saburo'); /* 配列の最後に要素を追加 */ $children[] = 'siro'; /* 配列の要素を表示 */ print_r($children); |
【実行結果】
1 2 3 4 5 6 7 |
Array ( [0] => taro [1] => ziro [2] => saburo [3] => siro ) |
多段衣装ケースの一番下に、シロウ君の衣装ケースが追加されました!
配列の結合
続いては、2つの配列を1つに結合する操作です。この操作にはarray_merge()関数を使用します。
多段衣装ケースが2つある場合は、1つにまとめてより扱いやすくしてしまいましょう!
1 2 3 4 5 6 7 8 9 |
/* 配列を2つ作成 */ $children_boys = array('taro', 'ziro'); $children_girls = array('hanako', 'mizue'); /* 2つの配列を結合 */ $children = array_merge($children_boys, $children_girls); /* 配列の要素を表示 */ print_r($children); |
【実行結果】
1 2 3 4 5 6 7 |
Array ( [0] => taro [1] => ziro [2] => hanako [3] => mizue ) |
男の子用の衣装ケースと女の子用の衣装ケースが1つにまとまり、お母さんはより扱いやすくなりました。
配列の値を検索
次は、配列の値を検索する操作です。どの子の衣装ケースが何段目にあるのか調べましょう。
実は、配列の検索にはarray_search()関数を使用する方法とin_array()関数を使用する方法の2つがあります。
まずはarray_search()を使用する方法です。
array_search()関数は第1引数で指定した要素を第2引数で指定した配列内で検索します。指定した要素がある場合はその要素番号を返し、ない場合はfalseを返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* 配列を作成 */ $children = array('taro', 'ziro', 'saburo'); /* $children内の'ziro'を検索し、その要素番号を$result1に格納 */ $result1 = array_search('ziro', $children); /* 'ziro'の検索結果($result1)を表示 */ print_r($result1); /* $children内の'hanako'を検索し、その要素番号を$result2に格納 */ $result2 = array_search('hanako', $children); /* 'hanako'の検索結果($result2)を表示 */ var_dump($result2); |
【実行結果】
1 2 |
1 bool(false) |
上のコードでは、ジロウ君のとハナコさんの衣装ケースを検索しました。
ジロウ君の方は無事見つかったようですね。指定した要素は前から2番目にあるため、要素番号は「1」となります(「【注意点】PHPの配列では要素番号が0から始まる!」を参照)。
残念ながらハナコさんの衣装ケースはなかったようですね。falseが返されています。
続いて、in_array()関数を使用する方法をみていきましょう。
in_array()関数は、第1引数で指定した要素が第2引数で指定した配列内に存在する場合はtrueを、存在しない場合はfalseを返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* 配列を作成 */ $children = array('taro', 'ziro', 'saburo'); /* $children内の'ziro'を検索 */ $result1 = in_array('ziro', $children); /* 'ziro'の検索結果($result1)を表示 */ var_dump($result1); /* $children内の'siro'を検索 */ $result2 = in_array('siro', $children); /* 'siro'の検索結果($result2)を表示 */ var_dump($result2); |
【実行結果】
1 2 |
bool(true) bool(false) |
上のコードでは、ジロウ君の衣装ケースとシロウ君の衣装ケースを探しています。
ジロウ君のケースはありましたが、シロウ君のものはありませんでした。
多次元配列の作成
ここまでは一次元の配列、すなわち衣装ケースが縦に並べられたものを扱ってきました。
実はPHPの配列にはこの他にも、多次元配列というものがあります。これは衣装ケースを縦と横に並べたものに相当します。
下の図のようなイメージですね。
多次元配列は以下のようにして作成します。
1 2 3 4 5 6 7 8 |
/* 多次元配列を作成 */ $children = array( array('taro', 'ziro', 'saburo'); array('hanako', 'mizue', 'noriko'); ); /* 多次元配列の要素を表示 */ print_r($children); |
【実行結果】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Array ( [0] => Array ( [0] => taro [1] => ziro [2] => saburo ) [1] => Array ( [0] => hanako [1] => mizue [2] => noriko ) ) |
男の子用の衣装ケースと女の子用の衣装ケースをそれぞれまとめたものを、さらにひとまとめにするイメージですね。
【注意点】PHPの配列では要素番号が0から始まる!
さて、PHPの配列における基本操作を説明してきました。
「さあ、これでバッチリ!早速配列を使ってみよう!!」というあなたに、お伝えしておきたい注意点があります。
それは、配列の要素番号は1ではなく0から始まるということです。
例えば以下の配列の場合、’taro’の要素番号は1ではなく0です。
1 2 |
/* 配列を作成 */ $children = array('taro', 'ziro', 'saburo'); |
日常生活では物を数えるときに0、1、2・・・と数え始めることはまずありませんよね。しかし、配列の場合は少々事情が異なるのです。
配列の要素を検索したり表示したりするときには、先頭の要素が0であることを忘れないでくださいね。
まとめ
いかがでしたか?今回は、PHPの配列を多段の衣装ケースに例えて分かりやすく解説しました。
配列という難しい概念も、日常の具体的な例と紐付けることで理解しやすくなるということが分かっていただけたかと思います。
プログラミングの他の概念に関しても、色々なものに例えてみると面白いのではないでしょうか。
この記事が、みなさんの学習の助けになれば幸いです。