無名関数
無名関数とは、関数名を定義せず使用することが出来る。
どういう時に使うかの説明に、関数を定義する程でもない処理を書きたい時というふうによく説明されるけど、それはどんな時って思う。
パラメータに関数を渡すような状況でしか利用する機会はないと思う。
<?php
例1)
$add = function($a, $b)
{
return $a + $b;
};
$c = $add(3, 2);
print($c); // 5
例2)
$list = array(1, 2, 3);
$result = array_map(function($e){
return $e * 2;
}, $list);
var_dump($result); // array(3) { [0]=> int(2) [1]=> int(4) [2]=> int(6) }
?>
即時関数
無名関数とよく似ているけど、こちらは即時実行される。変数の汚染を防ぎ、処理をまとめることが出来るメリットがあるが、どんな時に使えば良いのかはイマイチ分からない。
<?php
例1)
$c = (function($a, $b)
{
return $a + $b;
})(6, 5); // 11
print($c);
?>