記事の内容
この記事では、PHP言語でよく使う配列の基礎的な使い方から応用までを説明します。
簡単なサンプルも書くので、これさえ読めば配列の使い方はバッチリです!
PHPのバージョンは、7系です。
配列はどんな時に使うの?
配列とは複数のデータを扱うためのデータ型です。
そのため、実装中に、「同じようなことをしているかも?」と疑問に感じた時は、配列を使うことを検討してみましょう。
以下ような、「値を倍にするコード」を書く時を例にとって説明します。
配列を使ったコードの方が短いですし、新しい値を追加する時にも、配列に値を追加するだけで済みます。
ここがポイント!
- 何度も同じ処理が出てきたら、配列を使うことを考えてみよう
- 配列を使うと処理が短くなります
- 配列を使うと、コードを変更しやすくなります
配列の書き方
では、実際に配列の書き方を見ていきます。
配列を作成する方法には、array()と、[](角括弧)の2つがあります。
配列に値を格納することで、0から順番に0,1,2という添字(そえじ)が割り振られます。
添字とは、要素番号と考えて下さい。
ここがポイント!
- 配列は、array()か、[](角括弧)で作成できる
- 配列に値を格納することで、0から順番に0,1,2という添字が割り振られる
配列の中身の見方(print_r、var_dump、foreach)
配列の中身を見る方法は、いくつかあります。
ここでは、print_r、var_dump、foreachを使った方法で説明します。
var_dumpを使うと、より詳細な情報である配列の要素数と中身の型を表示してくれます。
配列に要素を追加(array_push、array_unshift)
配列の先頭と末尾に値を追加する方法です。
[]、array_push、array_unshiftを使う方法を紹介します。
配列の最初から要素を取り出す(array_popとarray_shift)
配列の先頭と末尾から値を取り出す方法です。
array_popとarray_shiftを使う方法を紹介します。
連想配列とは?
連想配列は、値を格納して自動的に添字の番号(0, 1, 2)が割り振られる配列とは異なります。
その代わりに、番号ではなくキーとなる名前をつけることができます。
番号の代わりにキーとなる名前をつけることにより、そのキーを指定して値を取り出すことができます。
連想配列の書き方
連想配列の中身の見方
連想配列の値を変更したり要素を追加する
多次元配列とは?
多次元配列とは、配列の中にさらに複数の配列が入っているものです。
多次元配列の書き方
多次元配列の中身の見方
多次元配列の中身もprint_rやvar_dumpで見ることができます。
もしくは、foreachを2回まわして、echoで見ることもできます。
応用編
配列の値を検索(array_search, in_array, array_column)
array_search, in_array
array_searchは配列のvalueで検索して、値が存在したらそのkeyを返します。
in_arrayは配列のvalueで検索して、値が存在したらそのtrue or falseを返します。
array_column
array_columnは多次元配列のkeyを検索して、新たに配列を作成することができます。
配列を結合
array_merge
array_mergeは、配列を結合することができます。
array_mergeのでは、連想配列のkeyが同じだった場合は、一方に上書きされます。
array_merge_recursive
array_merge_recursiveの場合、連想配列のkeyが同じだった場合は、上書きせずに1つのkeyに対して2つのvalueを入れます。
配列の値を置換(array_replace)
array_replaceに渡した配列で、元の配列の中身を上書きすることができます。
配列の値を並び替える(asort, arsort, ksort, krsort, asort, krsort)
asort, arsort
sortは、配列を昇順(小さい順)に並び替えます。
arsortは、配列を降順(大きい順)に並び替えます。
ksort, krsort
sortは、連想配列のkeyを昇順(小さい順)にを並び替えます。
sortは、連想配列のkeyを降順(大きい順)にを並び替えます。
数字だけではなく、アルファベットも並び替えることができます。
配列の値をフィルタリング(array_filter)
array_filterは、自分で定義した関数を渡すことで、フィルタリングしたい条件で配列から値を取得することができます。
配列の要素に特定の処理を行う(array_map)
array_mapは、自分で定義した関数を渡すことで、自分が行いたい操作を配列に行うことができます。
例えば、「配列の値を全て2倍にしたい」ということができます。
再帰的にarray_mapを使用することもできます。