ブレーンアシストオンライン

開発コーディングメモ~配列処理関数

開発コーディングメモ~配列処理関数

はじめに

PHPの簡易辞書シリーズです。
配列データを色々ごにょごにょして配列内のデータを変換して調整したり、新しく成形し直したりすることはよくあることかなと思います。
今回は、そんな配列データを処理するときに覚えておくと効率的に処理を行うことができる関数をご紹介致します。

今回ご紹介する配列処理関数の種類

・array_map()
・array_reduce()
・array_walk()
・array_filter()
・array_column()

それぞれの使い方

・array_map()

array_map():配列の全ての要素に対して、指定した関数を適用して新しい配列を作成します。配列の要素を一括して操作したい場合や、複数の配列をまとめて操作したい場合に便利です。

<?php
function multiply($value) {
return $value * 2;
}
$array = array(1, 2, 3, 4, 5);
$new_array = array_map(“multiply”, $array);
print_r($new_array);
?>

———–出力結果 ———–
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)
———————————

 

・array_reduce()
array_reduce():配列の要素を順次処理し、最終的に単一の値を返す関数です。配列の値をまとめて処理する場合に便利です。

<?php
function sum($carry, $item) {
$carry += $item;
return $carry;
}
$array = array(1, 2, 3, 4, 5);
$sum = array_reduce($array, “sum”);
echo $sum;
?>

———–出力結果 ———–
15
———————————

 

・array_walk()
array_walk():配列の全ての要素に対して、指定した関数を適用します。配列の要素を個別に操作したい場合に便利です。

<?php
function my_print($value, $key) {
echo “Key: $key, Value: $value\n”;
}
$array = array(“foo” => 1, “bar” => 2, “baz” => 3);
array_walk($array, “my_print”);
?>

———–出力結果 ———–
Key: foo, Value: 1
Key: bar, Value: 2
Key: baz, Value: 3
———————————

 

・array_filter()

array_filter():配列の要素を条件に基づいてフィルタリングする関数です。指定した条件に一致する要素だけを残すことができます。

<?php
function is_even($value) {
return ($value % 2 == 0);
}
$array = array(1, 2, 3, 4, 5);
$new_array = array_filter($array, “is_even”);
print_r($new_array);
?>

———–出力結果 ———–
Array
(
[1] => 2
[3] => 4
)
———————————

 

・array_column()

array_column():多次元配列から、指定した列だけを抽出して新しい配列を作成する関数です。データベースから取得した結果を処理する場合などに便利です。

<?php
$users = array(
array(“id” => 1, “name” => “Alice”, “age” => 20),
array(“id” => 2, “name” => “Bob”, “age” => 25),
array(“id” => 3, “name” => “Charlie”, “age” => 30),
);
$names = array_column($users, “name”);
print_r($names);
?>

———–出力結果 ———–
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
———————————

 

おわりに

今回は、PHPで覚えておくと効率的に処理を行うことができる配列処理関数についてご紹介致しました。普段からゴリゴリとコードを書いてループにループを重ねちゃっているような方であれば、こういった関数を利用すれば作業効率も処理パフォーマンスもアップすること間違いなしです。是非一度お試しください。