Как на FENOM узнать количество записей с определенным числом в массиве?
Приветствую, друзья, подскажите пожалуйста, как в массиве, проверить сколько параметров со определенным значением?
Знаю как проверить количество записей в массиве {set $count = count($array)}
Но мне нужно, в этом массиве, узнать сколько опубликованных записей.
В массиве MIGX tv есть разные параметры, но есть параметр чекбокс который отвечает за публикацию записи, если опубликовано то 1, если нет то 0
Знаю как проверить количество записей в массиве {set $count = count($array)}
Но мне нужно, в этом массиве, узнать сколько опубликованных записей.
В массиве MIGX tv есть разные параметры, но есть параметр чекбокс который отвечает за публикацию записи, если опубликовано то 1, если нет то 0
$item.published
Вывожу так{var $plus = $_modx->resource.field_plus | fromJSON}
{if $plus}
{foreach $plus as $idx => $item}
{if $idx =='8'}{break}{/if}
{if $item.published !=0}
<div class="plus__item plus-item">
{$item.text}
{/if}
{/foreach}
{/if}
Но вот как узнать сколько в массиве $item.published равных 1? Комментарии: 15
Используй постфиксный инкремент:
{var $plus = $_modx->resource.field_plus | fromJSON}
{var $count_pub = 0}
{if $plus}
{foreach $plus as $idx => $item}
{if $idx =='8'}{break}{/if}
{if $item.published !=0}
{$count_pub++}
<div class="plus__item plus-item">
{$item.text}
{/if}
{/foreach}
{/if}
COUNT: {$count_pub++}
via: github.com/fenom-template/fenom/blob/master/docs/ru/operators.md#операторы-инкремента-и-декремента
Не понимаю, это просто счетчик. $count_pub. Я пытаюсь как то узнать сколько в массиве параметров published равных 1
Я тебе и показал это!
Не могу получить количество $item.published равных 1 таким способом
А если два плюса в последней строке убрать?
Он считает итерации, толку от этого нет, а мне нужно из массива достать параметр published и посчитать сколько таких параметров равны 1
без итераций никак!
{var $count_pub = 0}
{var $plus = $_modx->resource.field_plus | fromJSON}
{if $plus}
{foreach $plus as $idx => $item}
{if $item.published ==1}
{$count_pub++}
{/foreach}
RETURN COUNT: {$count_pub}
{/if}
А не подскажете, в вашем примере увеличение счетчика так {$count_pub++} это работает, но эта переменная выводиться цифрой на сайте, как сделать что-бы она не выводилась? Пробовал так прописать {include $count_pub++} и так пробовал
{include ++$count_pub} так не выводиться но в обоих случаях ошибка в логах, php ругается на это :( как правильно прописать увеличение переменной что бы она не выводилась на сайте?
{include ++$count_pub} так не выводиться но в обоих случаях ошибка в логах, php ругается на это :( как правильно прописать увеличение переменной что бы она не выводилась на сайте?
Ага, мой косяк)))
Вот так:
Вот так:
{var $count_pub++}
{var $count_pub++} вызывает ошибку fenom вообще, белый лист.
Сорян нужное указывать
{var $count_pub+=1}
))){var $count_pub = 0}
{var $plus = [
["published" => 1,"name"=>"dsdsds"],
["published" => 1,"name"=>"xdsdsds"],
]}
{if $plus}
{foreach $plus as $idx => $item}
{if $item.published ==1}
{var $count_pub+=1}
{$item.name}
{/if}
{/foreach}
RETURN COUNT: {$count_pub}
{/if}
Благодарю! Все работает!
тогда подготовь массив таким образом чтобы выводились только published! и не е*и мозг!
Группируй массив по ключу
Группируй массив по ключу
{var $plus = $_modx->resource.field_plus | fromJSON | groupBypublished }
Сниппет groupBypublished:<?php
function _group_by($array, $key) {
$return = array();
foreach($array as $val) {
$return[$val[$key]][] = $val;
}
return $return;
}
return _group_by($input, 'published');
Ок благодарю! Буду пробовать так
Только проблема в том что как только найдется $idx==8 то корректность посчета становиться сомнительна. те нужно исключить строку с
{if $idx =='8'}{break}{/if}
и тогда подсчет будет более точным. :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.