@GooseTheDestroyer

Как подсчитать количество элементов в массиве с определенным значением в Smarty без новых ассигнов?

Добрый день.

PHP:
$query = "SELECT * FROM `statistic` ORDER BY `nickname`;";
$result = $mysqli->query($query);
$data = [];
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    $data[] = $row;
}

$smarty->assign('data', $data);


Путём гугления нашёл в Smarty 3 функцию @count.
{$data|@count}

Данным путём он подсчитывает общее количество строк.
Есть ли модификаторы/условия/костыли, чтобы используя только средства Smarty подсчитывать кол-во строк с определенным значением (Например: {$data.A == 'YES'}. Важно не использовать новые переменные в PHP.

ЗЫ: Для любителей лирических отступлений не по сути. Я учу Smarty, потому что мне хочется изучить Smarty. PHP/Twig лучше, но я хочу изучить Smarty. Так усложняю (не вводя новые переменные в PHP), потому что я учу Smarty, а не PHP и хочу решить (если возможно) задачу исключительно средствами Smarty.
  • Вопрос задан
  • 1197 просмотров
Решения вопроса 1
Maksclub
@Maksclub
maksfedorov.ru
1. Сделайте свой метод count_with($field)
2. Зарегайте его как плагин https://www.smarty.net/docs/en/api.register.plugin.tpl
3. Используйте его так: {$data|count_with:'YES'}

и все :)
Это чисто решение под Smarty -- регистрация плагина, то есть пользовательской функции PHP, то есть таким способом вы будете ПРАВИЛЬНО использовать Smarty (др словами ХОРОШО И ВЕРНО его учить)
Тк именно это его назначение -- в нем (в Smarty) специально придумали такой инструмент ПРАВИЛЬНОГО использования функционала, тк это шаблонизатор на 100%,вот вы и шаблонизируйте шаблон...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы