UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#048 PHPのarray_map関数と無名関数(callback)について

記入日:2023-02-25 編集日:2023-02-25

SQL見るだけクエリ。今回もPHPの機能ですが、array_map関数と無名関数(callback)について考えてみようと思います。

この記事を読むと(約5分)
array_map関数と無名関数(callback)の基本的な使い方が理解できます。

array_map関数は、
配列の全要素に対して、指定した関数を適用して新しい配列を作る関数です。

第一引数にコールバック関数を、第二引数以降に対象の配列を設定します。
コールバック関数は、配列の要素の数だけ呼び出されます。

 
// 配列の各要素に2倍する関数
function double($x) {
  return $x * 2;
}

// 配列を作成
$a = array(1, 3, 5, 7);

// array_mapで配列の各要素にdouble関数を適用する
$b = array_map('double', $a);

// 結果を表示
print_r($b); // Array ( [0] => 2 [1] => 6 [2] => 10 [3] => 14 )
 

array_map関数は、複数の配列も扱えます。
その場合は、コールバック関数は各配列から同じキーの要素を受け取ります。

// 配列の各要素を足す関数
function add($x, $y) {
  return $x + $y;
}

// 配列を作成
$a = array(1, 3, 5);
$b = array(2, 4, 6);

// array_mapで配列の各要素にadd関数を適用する
$c = array_map('add', $a, $b);

// 結果を表示
print_r($c); // Array ( [0] => 3 [1] => 7 [2] => 11 )
 

array_map関数では、
配列の各要素に対してコールバック関数を適用して新しい配列を作ります。
その際に、無名関数を使うと、コールバック関数をその場で定義できます。

無名関数は、関数名のない関数のことです。

$a = array(1, 3, 5, 7);

// 無名関数を使って配列の各要素に2倍する
$b = array_map(
    function($x) {
        return $x * 2; 
    }, 
    $a
); 

print_r($b); 
// Array ( [0] => 2 [1] => 6 [2] => 10 [3] => 14 )
 

PHP7.4以降では、無名関数のショートハンド(短縮記法)も使えます。

$a = array(1, 3, 5, 7);

// ショートハンドで同じことができる
$b = array_map(fn($x) => $x * 2, $a); 

print_r($b); 
// Array ( [0] => 2 [1] => 6 [2] => 10 [3] => 14 )

無名関数は、クロージャとも呼ばれ、親のスコープから変数を引き継ぐことができます。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。