PHPでarray型変数は非常によく使われます。
そのため、PHPではarrayに関係する関数が多く用意されています。
この記事ではその中でも、よく使う、あるいは知っておくべき関数を掲載します。
知らないと遠回りしたプログラムを書いてしまうことになるので、是非参考にしてください。
まずは変数を生成します。
$names = array('taro','jiro','saburo');
上記のようにすることで、$namesというarray型の変数が生成されました。
foreachを使って表示してみます。
foreach($names as $key => $value) {
echo $key . ":" . $value . ="\n";
}
出力結果
0:taro
1:jiro
2:saburo
次に連想配列を定義してみます。
$names = array('A111' => 'taro', 'A112' => 'jiro', 'A113' => 'saburo');
同じようにforeachで出力すると以下のような結果になります。
A111:taro
A112:jiro
A113:saburo
もっとも多く使われるであろう追加と取り出しについて見てみます。
まずは、array_push です。
この関数は、要素を配列の最後に追加するときに使用します。
$names = array('taro','jiro','saburo');
array_push($names, "hanako", "midori");
結果は以下となります。
[0] => 'taro'
[1] => 'jiro'
[2] => 'saburo'
[3] => 'hanako'
[4] => 'midori'
要素を最後ではなく最初に追加する場合は、array_unshift を使用します。
使用方法は、array_pushと同様なので割愛します。
次は取り出しです。
array_shift を使うことで、先頭から要素を1つ取り出すことができます。
$names = array('taro','jiro','saburo');
$first = array_shift($names);
$names は以下のようになります。
[1] => 'jiro'
[2] => 'saburo'
そして、$first には、taro が格納されます。
先頭ではなく最後から取り出す場合は、array_pop を使用します。
使用方法は、array_shiftと同様なので割愛します。
配列を結合するときは、array_merge を使用します。
1つ以上のarray型変数をマージすることができます。
$names_1 = array('first' => 'taro','jiro','saburo',1,3);
$names_2 = array('first' => 'hanako','midori',3);
$names = array_merge($names_1, $names_2);
$names は以下のようになります。
['first'] => 'hanako'
[0] => 'jiro'
[1] => 'saburo'
[2] => 1
[3] => 3
[4] => 'midori'
[5] => 3
キーが重複する場合は、後記の値で上書きされます。
また、数値添字は振りなおされるのでご注意ください。
分割する場合には、array_chunk を使用します。
第二引数で指定した要素の数ずつに分割されます。
$names_1 = array('taro','jiro','saburo',1,3);
$names = array_chunk($names_1, 2);
$names は以下のようになります。
[0] => Array
(
[0] => 'taro'
[1] => 'jiro'
)
[1] => Array
(
[0] => 'saburo'
[1] => 1
)
[2] => Array
(
[0] => 3
)
次は差分ですが、array_diff を使用して計算します。
第一引数のエントリのうち、他の配列に含まない要素を残した配列を返します。
重複しているかどうかはキーは関係なく、値が同じかどうかで判定されます。
$names_1 = array('a' => 'taro','jiro',3);
$names_2 = array('b' => 'taro','hanako','midori',1,3);
$names = array_diff($names_1, $names_2);
$names は以下のようになります。
[0] => 'jiro'
値だけでなく、キーも共に重複している要素のみを除きたい場合は、array_diff_assoc を使用します。
array_flip を使用することで、配列のキーと値を反転することができます。
値がintegerまたはstringでない場合などは警告が出力され正しく反転されないので注意。
$names_1 = array('a' => 'taro', 'b' => 'taro', 'c' => 'jiro');
$names = array_flip($names_1);
以下のような結果になります。
['taro'] => 'b'
['jiro'] => 'c'