====== Фильтр stats ====== ===== Описание ===== Фильтр stats позволяет накапливать и выводить некоторую статистическую информацию, например, находить сумму элементов, вычислять средние арифметические, подсчитывать количество и т.д. Пример: {$val|stats:"ttl"} Total:{$bogus|stats:"ttl","sum"} Здесь stats фильтр будет накапливать значения переменной val и затем выведет сумму элементов. В рамках фильтра stats есть понятие контекста - это как бы название экземпляра фильтра. Все упоминания фильтра с указанных контекстом будут применены к одному из экземлятов. В нашем примере мы использовать контекст ttl, который указывается первым параметров фильтра. Вторым параметром указывается режим работы фильтра. Если режим не указан, тогда значение базы для фильтра будет просто прибавлено к уже накомленному результату. Фильтр stats реализован как набор одиночек, поэтому многочисленные вызовы этого фильтра для каждого контекста в рамках одного шаблона используют один и тот же экземпляр объекта. ===== Синтаксис ===== {$var|stats:context_name [,mode]} ===== Параметры ===== * **context_name** - имя контекста. * **mode** (опционально) - режим. Список доступных режимов: * **acc** - используется по-умолчанию. Добавляем значение базы в текущему состоянию и выводит только что добавленное значение в шаблон. * **accq** - то же самое, что и первый вариант, только не выводит значение полученной суммы. Пользоваляет просто накапливать статическую информацию, не выводя ее. * **sum** - выводит сумму элементов * **avg** - выводить среднее арифметическое элементов * **count** - выводит количество добавленных элементов * **stdev** - выводит среднее отклонение по методу n-1. * **stdevp** - выводит среднее отклонение. * **reset** - сброс данных фильтра. ===== Пример использования ===== Шаблон stats.html (обратите внимание на режи accq) {val} - {$val|stats:"aq","accq"}
Total:{$bogus|stats:"aq","sum"}';
Поставим некоторые данные в шаблон: $template = new WactTemplate('stats.html'); $template->setChildDataset('List', array(array('val'=>10),array('val'=>20),array('val'=>30))); $template->display(); Получим: 10- 20- 30- Total: 60