Довольно часто, в учебной литературе для перебора массивов предлагают следующую конструкцию:
$array = range(0, 999999);
$time_start = microtime(TRUE);
for($i=0; $i<count($array); $i++){}
echo microtime(TRUE)-$time_start;
На первый взгляд все хорошо, но использовать такой код крайне не желательно. Дело в том, что на каждой итерации цикла, а если говорить точнее, при проверке условия, будет вызываться функция count(). Можно конечно видоизменить код следуюшим образом:
Недавно, я написал функцию для вычисления разности между двумя датами. Почитать об этом можно здесь. А спустя некоторое время, мне стало известно, что для этих целей в PHP 5.3 появилась встроенная функция date-diff. Сначала, я было расстроился, что потратил время на изобретение велосипеда, а затем решил проверить роботу этих двух функций. Моя идея заключалась в следующем. Генерировалось энное кол-во пар дат. Вычислялась разница между ними первым и вторым способом, а затем сравнивался результат.
Иногда перед разработчиком возникает задача в нахождении времени прошедшего между двумя датами. Я решил написать универсальную функцию для решения этой задачи. Она находит количество лет, месяцев, дней, часов, минут, секунд прошедших между двумя датами и возвращает их в виде массива.
В свое время я писал функцию для фильтрации введенного пользователем HTML кода на языке Perl. Если кому интересно почитать можно здесь. Но так, как Perl уже давно не мейнстрим я решил переписать все это дело на PHP.
Пользоваться фильтром нужно следующим образом. Сначала подключаем класс и создаем объект представляющий из себя фильтр.
require_once "html_filter_class.php";
$html_filter = new html_filter();
Хочу поделиться небольшой функцией для рекурсивного обхода файлов в каталогах.
function get_files($dir = "."){
$files = array();
if ($handle = opendir($dir)) {
while (false !== ($item = readdir($handle))) {
if (is_file("$dir/$item")) {
$files[] = "$dir/$item";
}
elseif (is_dir("$dir/$item") && ($item != ".") && ($item != "..")){
$files = array_merge($files, get_files("$dir/$item"));
}
}
closedir($handle);
}
return $files;
}