PHP array関数のまとめ

2013/09/24

配列を操作する関数のまとめ

概要

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'

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る