無名関数は PHP 5.3 から利用できます。
匿名関数は PHP で長い間利用可能でした: create_functionは PHP 4.0.1 から使用されています。しかし、PHP 5.3 の時点で新しい概念と構文が利用可能になったというあなたの意見は正しいです。
それらを使うべきですか、それとも避けるべきですか?もしそうなら、どのように?
以前に使用したことがある場合create_function、新しい構文は、それを使用した場所に簡単に滑り込むことができます。他の回答が述べたように、一般的なケースは、一度だけ (または少なくとも 1 つの場所で) 使用される「使い捨て」関数の場合です。通常、これはarray_map / reduce / filter、preg_replace_callback、usortなどのコールバックの形式で提供されます。
匿名関数を使用して文字が単語に出現する回数をカウントする例 (これは他の多くの方法で実行できますが、これは単なる例です):
$array = array('apple', 'banana', 'cherry', 'damson');
// For each item in the array, count the letters in the word
$array = array_map(function($value){
$letters = str_split($value);
$counts = array_count_values($letters);
return $counts;
}, $array);
// Sum the counts for each letter
$array = array_reduce($array, function($reduced, $value) {
foreach ($value as $letter => $count) {
if ( ! isset($reduced[$letter])) {
$reduced[$letter] = 0;
}
$reduced[$letter] += $count;
}
return $reduced;
});
// Sort counts in descending order, no anonymous function here :-)
arsort($array);
print_r($array);
これは(簡潔にするために切り取られています):
Array
(
[a] => 5
[n] => 3
[e] => 2
... more ...
[y] => 1
)