このページについて
このページではphpで使える配列と連想配列の違いと使い方をまとめているページになります。配列で使える機能とそうでない機能などを色々と解説しています。
配列とは?
配列は1つの変数にいくつもの情報を保管できる機能になります。通常の変数は1:1ですが、配列を使うと幾つでも変数に設定できます。通常の変数と配列を書くと以下のようになります。
$x = 1;
$y = array(1,2,3,4,'abc');
上の$xが通常の変数です。そして下の$yが配列の基本的な形になります。arrayは配列を意味しています。そして[]内にあるものが配列内の各要素となります。それぞれ,(カンマ)で区切ると要素1,要素2ということになります。なので$yには要素が全部で5つ入っていることになります。
そしてarrayは省略できるので、以下のように書いても配列として扱えます。
$y = [1,2,3,4,'abc'];
連想配列とは?
連想配列は上記の配列とは違い、キー:値の組み合わせを保持している配列のことを言います。通常の配列と連想配列を書くと以下のようになります。
$x = 1;
$z = array('a'=>1,'b'=>2);
上の$xが通常の変数で、$zが連想配列です。連想配列の特徴はキーと呼ばれるものと、値がセットになっている点です。1つ目の値を見ると、’a’=>1となっています。これはキー(a)の値が1という組み合わせになっていることになります。
こちらもarrayを省略して書く事ができます。
$z = ['a'=>1,'b'=>2];
値の呼び出し方
配列と連想配列のそれぞれの書き方や違いを見ていきましたが、次は値を呼び出す方法を紹介します。まず通常の変数の値の呼び出し方をおさらいすると
$x = 1;
echo $x;
これで$xに入っている値が出力されます。この場合は1が出力されます。
次に配列・連想配列の値の呼び出し方を紹介します。
$y = [1,2,3];
echo $y[0];
$z = ['a'=>1,'b'=>2];
echo $z['b'];
このような書き方で出力する事ができます。$yの配列から値を呼び出すには$y[0];のように数字で指定します。phpもJavaScriptも配列内は0から順番に自動で数値が付与されているので、一番左にある値を呼び出すには0を指定します。この例では1が出力されます。
連想配列の$zから値を呼び出すには、キーを指定します。この連想配列の場合は[‘b’]などでキーを指定します。この例の場合は2が出力されます。
このようにそれぞれ呼び出す方法が異なります。
配列に使える関数
配列に使える便利な関数を紹介します。もっと探せば色々出てくると思いますが、最も基本的なものだけを紹介します。
配列内の要素を数える
配列内の要素の数を取得するcount関数は使ったりします。主に数を数えてその回数分だけループさせるとか、そういう時に使えます。
$x = [1,2,3,4,5];
echo count($x);
この場合、$xの配列内にある要素の数(5)が出力されます。これは連想配列にも使えて、同じように配列内の要素数が出力されます。
配列同士を結合
配列同士の内容を結合というシンプルなものになります。配列+連想配列も可能です。あくまでも結合なので、足し算ではありません。
$z= [1,2];
$x = ['a'=>10,'b'=>22];
echo var_dump($z+$x);
この場合、配列zと連想配列xを結合して結果を返します。後半で出てきたvar_dumpは配列の要素を全て見る時に使います。結果的にはこうなります。
結合後の配列から特定の値を取得したい場合は一旦別の変数に入れた後で、その変数に対して[]で値やキーを指定して呼び出します。
$z=[1,2];
$x=['a'=>10,'b'=>22];
echo var_dump($z+$x);
$y = $z+$x;
echo $y['a'];
これで呼び出されるのはキーaとペアになっている10です。bにすれば22が、0にすれば1が呼び出されます。
配列をソートする
配列内の要素を並び替える時に使える関数があります。ソート関数に関してはこちらでまとめています。
$z=[1,4,2,5,10,42,100];
という配列があったとします。この配列に対して以下を使うとそれぞれ並び替える事ができます。
- rsort
- 配列内の値を値を基準にして、降順でソートします。上の配列に対して使うと100,42,10,5,4,2,1の順番にならびます。そして$z[0]などで並び変った後の値を呼び出す事ができます。
- sort
- 配列内の値を値を基準にして、昇順でソートします。上の配列に対して使うと1,2,4,5,10,42,100の順番に並びます。上のrsortと同じく、数値指定で呼び出すと並び変った後の値が取得できます。
- krsort
- 配列・連想配列のキーを基準に並び替えます。rが付いている方は降順で並び替えます。上の配列の例に対して使うと配列キーは0,1,2,3,4,5,6の順番で並んでいますが、それが逆順になります。このkrsortは値とキーの関係は変わらないので、取得できる値に変化はありません。
- ksort
- 配列・連想配列のキーを基準に並び替えます。ksortは昇順で並び替えます。上の配列に対して使うとそのまま変化はありません。これもキーと値の関係は変わらないので、取得できる値は変化しません。
同じ値があった場合はそれらの並び順は保持されます。そして文字に対して使うと文字を基準に比較して並び替えてくれます。
他にも自然順・ユーザー定義などで並び替えることもできますが、よく使われるのはこの辺りだと思います。
配列初期化
配列は変数の宣言と同時に中身を入れるのもよく使いますが、何もない空っぽの配列を作成することもあります。その際は簡単で、[]を宣言すればOKです。
$x =[];
配列にアイテムを追加する
空っぽの配列でもそうでなくても、配列に後からアイテムを入れ込む事ができます。
$z=[];
$z[]=1;
$x[]=10;
一番上の$zは空っぽの配列を作成で、2行目はその配列に1を入れるという処理になります。3行目は配列の宣言と同時に値を入れる書き方になります。どちらも問題なく使えます。
配列に配列を入れる多次元配列
最後に配列に配列を入れる多次元配列というものを紹介します。多次元配列は色々なパターンで使われますが、基本的には配列に連想配列を入れたり、その逆も可能です。もちろん、配列に配列を入れることもできます。実際の例を示すと以下のようになります。
$x = [
[0,1],
[2,3]
]
このような多次元配列があったとします。この場合は$xの配列内に2つの配列を持っています。そしてその配列の値を取得するには細かく指定する必要があるので以下のように書きます。
echo $x[0][1];
これを実行すると0番目の配列の1番目の値を取得という書き方になるため、0番目の配列([0,1])から、1番目の値(1)を取得します。なので表示されるのは1だけです。
まとめ
phpの配列と連想配列の基本的な書き方から、それぞれで使う事ができる便利な関数などの紹介をしてきました。他のphp関連記事は以下を参考にしてみてください。
- phpの基礎
- phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
- echoとprint
- 画面に文字を出力する2種類の言語構造の使い方
- 変数
- phpで使える変数の扱い方などを解説しています。
- 変数のスコープ(有効範囲)
- 変数のスコープについての解説です。
- var_dump
- 変数の情報を見ることができる関数
- print_r
- 変数の情報をわかりやすい形式で表示する関数
- 配列と連想配列
- 配列と連想配列の書き方と、便利な関数の解説など。
- key
- 連想配列のキーを返してくれます。内部ポインタ関係あり。
- count
- 配列や連想配列の要素数を数えてくれる関数の使い方解説。
- ソート関数
- 配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
- array_reverse
- 配列の中身の順番を反転させる関数です。
- array_chunk
- 配列を指定した数で分割させるarray_chunk関数の使い方解説です。
- array_combine
- 2つの配列を足して1つの連想配列にする関数です。
- array_diff
- 2つの配列を比較して、存在しない値を出力する関数
- array_push
- 配列に対して後方に要素を追加する関数
- array_unshift
- 配列に対して先頭に要素を追加する関数。
- array_shift
- 配列の先頭の要素を取り出す関数。
- array_merge
- 複数の配列を統合して1次元の配列にする関数
- array_intersect
- 2つの配列を比較して、両方に共通するものを出力する関数
- include
- includeを使って別のphpファイルを読み込む方法の解説。
- if文
- if文を使って処理を変更させる方法の解説。
- switch文
- switch文を使って複数の処理分岐を行わせたい時に使います。
- forループ
- forループを使って同じ処理を行わせる方法の解説です。
- whileループ
- whileループを使って同じ処理を行わせる方法の解説と注意点。
- do-whileループ
- do-whileループを使って同じ処理を行わせる方法の解説です。
- foreachループ
- foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
- continue
- ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
- ループのネスト構造(入れ子)
- ループの中にループを入れる書き方や考え方の解説。
- function
- functionを使って自作の関数を作成・使用する方法の解説。
- 引数の種類と書き方解説
- functionで扱う引数の種類と書き方を解説
- return
- returnの使い方と関数での使い方解説。
- class
- classを作成して変数と関数を1つにまとめる方法と使い方の解説。
- constructとdestruct
- classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
- インターフェイス
- インターフェイスという用語の解説と、実際の使い方解説
- トレイト
- コードを再利用するのに便利なトレイトの解説です。
- 列挙型
- プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
- PDOを使ってMySQLへ接続
- PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
- データの加工と表示
- PDOでデータベースから取得したデータを加工して表示する方法の解説です。
- HTMLフォームのデータ受け取りと表示
- HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。