はじめに
PHPでWebアプリケーションを開発する上で、配列は非常に重要なデータ構造です。ユーザー情報、商品リスト、設定値など、様々なデータをまとめて扱う際に欠かせません。
PHPには、これらの配列を効率的に操作するための便利な配列関数がたくさん用意されています。配列関数を使いこなせば、複雑な処理も短いコードでスマートに記述できるようになります✨
このステップでは、特に使用頻度の高いarray_merge()
とarray_map()
を中心に、いくつかの便利な配列関数を学んでいきましょう!
配列を結合する: array_merge()
array_merge()
関数は、1つまたは複数の配列を結合して、新しい1つの配列を作成する関数です。元の配列に変更を加えることはありません。
基本的な使い方
引数に結合したい配列を渡します。渡した順番に配列が結合されます。
<?php
$array1 = [1, 2, 3];
$array2 = ['a', 'b', 'c'];
$merged_array = array_merge($array1, $array2);
print_r($merged_array);
// 出力: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => a [4] => b [5] => c )
?>
キーの扱い(数値添字 vs 連想配列)
結合する配列のキー(添字)の種類によって、array_merge()
の挙動が少し異なります。
- 数値キーの場合: キーは0から始まる連番に振り直されます。
- 文字列キーの場合:
- キーが重複しない場合: そのまま結合されます。
- キーが重複する場合: 後から指定した配列の値で上書きされます。
<?php
// 数値キーの例 (キーは振り直される)
$num_array1 = [0 => 'apple', 1 => 'banana'];
$num_array2 = [0 => 'orange', 1 => 'grape'];
$merged_num = array_merge($num_array1, $num_array2);
print_r($merged_num);
// 出力: Array ( [0] => apple [1] => banana [2] => orange [3] => grape )
echo "<hr>";
// 文字列キーの例 (重複キーは上書き)
$assoc_array1 = ['color' => 'red', 'size' => 'M'];
$assoc_array2 = ['size' => 'L', 'price' => 1000];
$merged_assoc = array_merge($assoc_array1, $assoc_array2);
print_r($merged_assoc);
// 出力: Array ( [color] => red [size] => L [price] => 1000 )
?>
注意点: +
演算子でも配列を結合できますが、キーが重複した場合の挙動が異なります。+
演算子は、先に指定した配列の値を優先します。目的に応じて使い分けましょう。
配列の各要素に関数を適用する: array_map()
array_map()
関数は、指定した配列の各要素に対してコールバック関数(指定した処理を行う関数)を適用し、その結果を要素とする新しい配列を作成する関数です。ループ処理を簡潔に書くことができます。
基本的な使い方
最初の引数にコールバック関数(関数名か無名関数)、2番目以降の引数に処理対象の配列を渡します。
<?php
// 各要素を2倍にする関数
function double($n) {
return $n * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled_numbers = array_map('double', $numbers); // 関数名を文字列で指定
print_r($doubled_numbers);
// 出力: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
echo "<hr>";
// 無名関数を使う例 (各要素を大文字にする)
$fruits = ['apple', 'banana', 'orange'];
$upper_fruits = array_map(function($fruit) {
return strtoupper($fruit);
}, $fruits);
print_r($upper_fruits);
// 出力: Array ( [0] => APPLE [1] => BANANA [2] => ORANGE )
?>
複数の配列を引数に取る場合
array_map()
には複数の配列を渡すことも可能です。その場合、コールバック関数は渡された配列の数と同じ数の引数を受け取る必要があります。各配列の同じインデックスにある要素が、コールバック関数の引数として順番に渡されます。
<?php
$array1 = [1, 2, 3];
$array2 = [10, 20, 30];
$array3 = [100, 200, 300];
// 3つの配列の要素を足し合わせる
$sum_array = array_map(function($n1, $n2, $n3) {
return $n1 + $n2 + $n3;
}, $array1, $array2, $array3);
print_r($sum_array);
// 出力: Array ( [0] => 111 [1] => 222 [2] => 333 )
?>
💡 array_map()
は、配列の要素を変換したり、特定の形式に加工したりする際に非常に役立ちます。
まだまだある!便利な配列関数たち 🚀
PHPには、ここで紹介した以外にもたくさんの便利な配列関数があります。いくつか代表的なものを表で見てみましょう。
関数名 | 説明 | 簡単な用途例 |
---|---|---|
array_push() |
配列の末尾に1つ以上の要素を追加する | リストに項目を追加する |
array_pop() |
配列の末尾の要素を取り出す(配列から削除される) | スタック構造(後入れ先出し)の実装 |
array_shift() |
配列の先頭の要素を取り出す(配列から削除される) | キュー構造(先入れ先出し)の実装 |
array_unshift() |
配列の先頭に1つ以上の要素を追加する | リストの先頭に項目を追加する |
count() / sizeof() |
配列の要素数を数える | 配列のサイズを知りたい時 |
in_array() |
配列内に指定した値が存在するかチェックする | 特定の値が含まれているか確認する |
array_key_exists() |
配列内に指定したキーが存在するかチェックする | 連想配列で特定のキーがあるか確認する |
array_keys() |
配列の全てのキー、または指定した値を持つキーを取得する | 配列のキーだけを取り出したい時 |
array_values() |
配列の全ての値を取得する | 配列の値だけを取り出したい時 |
array_filter() |
コールバック関数を使って配列の要素をフィルタリングする | 特定の条件を満たす要素だけを抽出する |
array_reduce() |
コールバック関数を使って配列要素を単一の値にまとめる | 配列要素の合計値や積を計算する |
sort() , rsort() , asort() , arsort() , ksort() , krsort() |
配列を様々なルールでソート(並び替え)する | データを昇順・降順に並び替えたい時 |
これらの関数を適切に使うことで、より効率的で読みやすいコードを書くことができます。それぞれの関数の詳細な使い方やオプションについては、PHP公式マニュアルの配列関数のページを参照することをおすすめします。(※外部サイトへのリンクです)
まとめ
今回は、PHPの配列操作を格段に楽にする配列関数の中から、array_merge()
とarray_map()
、そしてその他の便利な関数をいくつか紹介しました。
array_merge()
: 複数の配列をスマートに結合!array_map()
: 各要素への処理を簡潔に記述!- その他多数: 検索、追加、削除、フィルタリング、ソートなど、用途に応じた関数が豊富!
配列関数はPHPプログラミングの基本であり、応用範囲も広いです。ぜひ実際にコードを書いて、これらの関数の動きを試してみてください。
次のステップでは、いよいよ関数の定義方法やスコープについて詳しく学んでいきます。お楽しみに!💪