
今回はPHPで使われるarray関数7つとその使い方について解説します。
簡単なコードで使い方を記載しているので、ご自身でも試してみてください。
目次
初期定義のためには:array
配列を作るための関数です。
多次元配列を作成することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 | $numbers = array(1, 2, 3, 4, 5); $fruits = array("りんご", "みかん", "バナナ"); $person = array( "名前" => "佐藤", "年齢" => 25, "職業" => "エンジニア" ); |
配列への追加のためには:array_push
既存配列の末尾に1つ以上の値を追加する関数です。
返り値は追加後の配列の要素数です。
1 2 3 4 5 6 7 8 | $fruits = array("りんご", "みかん", "バナナ"); array_push($fruits, "ぶどう", "メロン"); print_r($fruits); |
▼実行結果
1 2 3 4 5 6 7 8 9 10 11 | Array ( [0] => りんご [1] => みかん [2] => バナナ [3] => ぶどう [4] => メロン ) |
連想配列にarray_push()を実行する場合は数値キーが自動で振られます。
1 2 3 4 5 6 | $person = ["名前" => "佐藤"]; array_push($person, "25"); print_r($person); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [名前] => 佐藤 [0] => 25 ) |
キーを指定したい場合は、array_push()を使うのではなく、キーを宣言して、値と一緒に追加する必要があります。
1 2 3 4 5 6 7 8 9 10 11 | $person = array( "名前" => "佐藤", "年齢" => 25 ); $person += array( "出身" => "東京", "趣味" => "読書" ); print_r($person); |
▼実行結果
1 2 3 4 5 6 7 8 9 | Array ( [名前] => 佐藤 [年齢] => 25 [出身] => 東京 [趣味] => 読書 ) |
配列内の絞り込みのためには:array_filter
配列の要素を 条件に基づいて絞り込むときに使います。
引数について
$array 対称の配列
$callback 各要素をチェックする関数 trueを返したものだけ残る
$mode オプション
①偶数だけを残す
1 2 3 4 5 6 7 8 9 | $numbers = [1, 2, 3, 4, 5, 6]; $result = array_filter($numbers, function($value) { return $value % 2 === 0; // 偶数ならtrue }); print_r($result); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [1] => 2 [3] => 4 [5] => 6 ) |
②多次元配列の条件フィルタ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $users = [ ['name' => 'Alice', 'age' => 25], ['name' => 'Bob', 'age' => 17], ['name' => 'Charlie', 'age' => 30], ]; $adults = array_filter($users, function($user) { return $user['age'] >= 20; }); print_r($adults); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [0] => Array ( [name] => Alice [age] => 25 ) [2] => Array ( [name] => Charlie [age] => 30 ) ) |
③空の要素を除外する
1 2 3 4 5 6 7 | $fruits = ["apple", "", "banana", null, "cherry"]; $result = array_filter($fruits); print_r($result); |
▼実行結果
1 2 3 4 5 6 7 8 9 | Array ( [0] => apple [2] => banana [4] => cherry ) |
共通要素の抽出のためには:array_intersect
複数の配列の中で共通している値だけを抽出します。
①共通の値を抽出する
1 2 3 4 5 6 7 8 | $a = ["apple", "banana", "cherry"]; $b = ["banana", "cherry", "durian"]; $result = array_intersect($a, $b); print_r($result); |
▼実行結果
1 2 3 4 5 6 7 | Array ( [1] => banana [2] => cherry ) |
②一致している要素が1つでもあるか判定
1 2 3 4 5 6 7 8 9 10 | $user_roles = ['editor', 'subscriber']; $allowed_roles = ['admin', 'editor']; if (array_intersect($user_roles, $allowed_roles)) { echo "権限あり!"; } else { echo "権限なし!"; } |
▼実行結果
1 2 3 | 権限あり! |
共通要素の抽出の際のカスタマイズには:array_uintersect
array_intersect()と同様、複数の配列の共通部分を取り出す関数です。
しかしarray_uintersect()は文字列比較・数値比較・厳密比較など自由に比較ルールを設定できます。
①厳密比較を行う
1 2 3 4 5 6 7 8 9 10 11 | $a = [1, 2, "3"]; $b = [3, "2"]; $result = array_uintersect($a, $b, function ($a, $b) { if ($a === $b) return 0; return ($a > $b) ? 1 : -1; }); print_r($result); |
▼実行結果
1 2 3 4 5 6 | Array ( ) |
どれも型まで一致しないので空配列になります。
array_intersect()なら[1]=>2 [2]=>3 が返っていました。
②大文字・小文字を無視した文字列比較
1 2 3 4 5 6 7 8 | $a = ["Apple", "Banana"]; $b = ["apple", "banana"]; $result = array_uintersect($a, $b, "strcasecmp"); print_r($result); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [0] => Apple [1] => Banana ) |
strcasecmp() は「大文字・小文字を無視して比較」する関数なので、「Apple」と「apple」が同一と判断されます。
配列内での繰り返し処理には:array_map
配列の各要素に対して同じ処理を適用し、新しい配列を返す関数です。
ループを使わずに短く書くことができます。
引数について
$callback 配列の各要素に適用する関数
$array 処理対象の配列 複数配列指定することが可能です。
返り値は変換後の配列で元の配列は変更されません。
①複数配列を同時に処理
1 2 3 4 5 6 7 8 9 10 11 | $a = [1, 2, 3]; $b = [4, 5, 6]; $result = array_map(function($x, $y) { return $x + $y; }, $a, $b); print_r($result); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [0] => 5 [1] => 7 [2] => 9 ) |
②配列の文字列をすべて大文字に変換
1 2 3 4 5 6 7 | $fruits = ["ringo", "みかん", "バナナ"]; $result = array_map('strtoupper', $fruits); print_r($result); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [0] => RINGO [1] => みかん [2] => バナナ ) |
「strtoupper」は日本語には効かないので英字の「ringo」のみが変換されます。
③連想配列の変換
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $person = [ "名前" => "佐藤", "年齢" => 25, "職業" => "エンジニア" ]; // 年齢だけを2倍にする $result = array_map(function($v, $k) { if ($k === "年齢") { return $v * 2; } return $v; }, $person, array_keys($person)); print_r($result); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [名前] => 佐藤 [年齢] => 50 [職業] => エンジニア ) |
配列のキーだけを取り出すには:array_keys
配列の「キー」だけを取り出して新しい配列を作成する関数です。
引数について
$search_value(任意) 指定すると、その値を持つキーだけを返します。
$strict(任意) trueにすると型も厳密に比較します。
①配列のキーだけ取り出す
1 2 3 4 5 6 7 8 9 10 11 | $person = [ "名前" => "佐藤", "年齢" => 25, "職業" => "エンジニア" ]; $keys = array_keys($person); print_r($keys); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [0] => 名前 [1] => 年齢 [2] => 職業 ) |
②値が特定のもののキーだけ取得
1 2 3 4 5 6 7 8 9 10 11 12 | $person = [ "名前" => "佐藤", "年齢" => 25, "職業" => "エンジニア" ]; // 値が25のキーを探す $keys = array_keys($person, 25); print_r($keys); |
▼実行結果
1 2 3 4 5 6 | Array ( [0] => 年齢 ) |
③インデックスだけ取得
1 2 3 4 5 6 7 | $fruits = ["りんご", "みかん", "バナナ"]; $keys = array_keys($fruits); print_r($keys); |
▼実行結果
1 2 3 4 5 6 7 8 | Array ( [0] => 0 [1] => 1 [2] => 2 ) |
④連想配列の加工
1 2 3 4 5 6 7 8 9 10 | $person = ["名前" => "佐藤", "年齢" => 25]; // キーと値を同時に加工したいとき $result = array_map(function($v, $k) { return "$k: $v"; }, $person, array_keys($person)); print_r($result); |
▼実行結果
1 2 3 4 5 6 7 | Array ( [0] => 名前: 佐藤 [1] => 年齢: 25 ) |
array_values($array)という値を取り出す関数も存在します。
まとめ
いかがだったでしょうか。今回はPHPで便利なarray関数を7つ紹介しました。
これらはWP開発でも見る機会のある関数です。
自分でテーマファイルをカスタマイズする機会があったら今回の記事で紹介した関数を思い出してみてください。
以上、最後までご覧いただきありがとうございました。

![[PHP] 知っていると何かの時に得する関数 checkdate, number_format, natcasesort php_toku](https://b-risk.jp/wp/wp-content/uploads/2014/08/php_toku-300x199.png)
![[PHP] 多次元配列の複数条件ソート array_multisortの使い方 array_rra](https://b-risk.jp/wp/wp-content/uploads/2014/04/array_rra1-300x196.jpg)


