Нужна помощь в выводе Smarty в WHMCS - PullRequest
0 голосов
/ 20 мая 2019

Я хочу получить доменные статуи в клиентской области WHMCS, используя приведенный ниже код, но в его выводе отображаются дубликаты значений, есть ли какая-нибудь помощь, чтобы я мог удалить дубликаты значений.

{foreach key=num item=status from=$domains}
<li><a href="#"><span>{$status.statustext}</span></a></li>{/foreach}

Вывод - что-то ниже, но я не хочу повторяющихся значений, таких как Ожидание 2 или более раз, если ожидают больше доменов.

В ожидании До Активный

1 Ответ

1 голос
/ 20 мая 2019

Я рекомендую извлечь текст статуса для каждого домена, используя array_column () .Это даст вам новый массив, из которого вы можете легко удалить любые дублирующиеся значения, используя array_unique () или array_count_values ​​() .Вот несколько способов сделать это:

Объедините array_column () с array_unique () для удаления дубликатов. Это, пожалуй, самый здравый подход, который может помочь с читабельностью в будущем.Массив $ domains отправляется в array_column (), которая извлекает значения statustext.Затем результат отправляется в array_unique для удаления любых повторяющихся значений.

{foreach item=statustext from=$domains|@array_column:'statustext'|@array_unique}
<li><a href="#"><span>{$statustext}</span></a></li>{/foreach}

Используйте только array_column () и задайте «statustext» в качестве индекса массива. Этот метод использует на один вызов меньше функцииВозможно, сделав его немного более эффективным за счет некоторой читабельности.Второй параметр может быть указан в array_column () для извлечения другого столбца в качестве индекса для вновь созданного массива.Дублирующиеся индексы массива объединяются / перезаписываются, поэтому установка индекса для соответствия его значениям предотвратит сохранение дубликатов.

{foreach item=statustext from=$domains|@array_column:'statustext':'statustext'}
<li><a href="#"><span>{$statustext}</span></a></li>{/foreach}

Объедините array_column () с array_count_values ​​(), чтобы удалить дубликаты. Itможет быть полезно иметь счетчик каждого состояния, так как вы агрегируете данные из нескольких доменов.Применение array_count_values ​​() к результатам array_column () удалит повторяющиеся значения, а также подсчитает каждое значение.

{foreach key=statustext item=count from=$domains|@array_column:'statustext'|@array_count_values}
<li><a href="#"><span>{$statustext}: {$count}</span></a></li>{/foreach}
...