Рекурсивная обработка массива
Приятно иметь "умные" функции, в которые всё равно что передавать - с помощью какой-то магии она сама поймёт что ей передали и что нужно с этим сделать. Например, когда нужно сделать htmlspecialchars, лучше иметь одну функцию и для одной строки, и для массива. Вот как я это решал такие задачи раньше:
-
function h($text) {
-
foreach ($text as &$item) {
-
$item = h($item);
-
}
-
return $text;
-
}
-
}
А для совместимости с PHP 4 пришлось бы вообще писать:
-
function h($text) {
-
for ($i=0; $i<$count; $i++) {
-
$text[$i] = h($text[$i]);
-
}
-
return $text;
-
}
-
}
потому что PHP 4 не может изменять переменные внутри foreach.
А рассказываю я это, чтобы показать, что очень полезно читать чужой код, особенно, если его делали более профессиональные программисты. Сегодня наткнулся на такой кусок в cake/basics.php
-
function h($text) {
-
}
-
}
Красота!
Да, на текстах кейка можно учиться и учиться...
Действительно, красиво! А главное просто!
В таких случаях я говорю: "Браво!"
Гм, так функция-то вроде в доке пхп описана, давно пользую наряду с array_filter().
А исходники кейка -- вещь клевая. Я, похоже, их изучаю больше, чем ман
Функция, конечно, описана - http://www.php.net/manual/en/function.array-map.php
Мало того, я о ней знал. Но почему то так не использовал, пока не заметил в Cake.