Я не думаю, что анонимная функция является заменой для цикла for, и при этом я не думаю, что необходимо заменять их циклами.
Для чего это полезно, это обратный вызов.Возьмем для примера: (да, это неубранная сортировка пузырьков, но это пример)
<?php
function bubble_sort($sort_rule, $elements) {
do {
$swapped = false;
for ($i = 0; $i < count($elements) - 1; $i++) {
if ($sort_rule($elements[$i], $elements[$i + 1])) {
$elements[$i] ^= $elements[$i + 1];
$elements[$i + 1] ^= $elements[$i];
$elements[$i] ^= $elements[$i + 1];
$swapped = true;
}
}
} while($swapped);
return $elements;
}
print_r(bubble_sort(function ($a, $b) { if ($a > $b) return true; else return false; }
,array(1,6,3,7,42,-1,0,6)));
?>
Замыкания не являются заменой для циклов в процедурном языке программирования, таком как php.Конечно, если вы используете lisp или схему, они есть, но в этом нет необходимости.
Вы можете написать их таким образом, все, что вы действительно будете делать, - это создавать анонимную функцию с циклом for внутри нее.Я думаю, что рекурсия была бы просто ненужной, если бы задачу так же легко выполнить с помощью цикла for, и поэтому вы не целуетесь в циклы до свидания.
Анонимные функции также очень полезны в программировании, управляемом событиями,когда вы хотите просто определить метод обратного вызова очень быстро.