首页 > 解决方案 > 需要 WHMCS 客户端区域的 Smarty 输出帮助

问题描述

我想通过使用下面的代码在 WHMCS 客户区获取域状态,但它的输出显示重复值,有什么帮助我可以删除重复值。

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

输出如下,但如果有更多域待处理,我不希望重复值,如待处理 2 次或更多。 

  • 待办的
  • 待办的
  • 积极的
  • 标签: phpsmartywhmcs

    解决方案


    我建议使用array_column()为每个域提取状态文本。这将为您提供一个新数组,您可以使用array_unique()array_count_values()轻松删除任何重复值。以下是实现此目的的几种方法:

    将 array_column() 与 array_unique() 结合使用以删除重复项。这可能是最常见的方法,可以帮助将来提高可读性。$domains 数组被发送到 array_column() 提取状态文本值。然后将结果发送到 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() 结合以删除重复项。由于您正在聚合来自多个域的数据,因此计算每个状态的计数可能很有用。将 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}
    

    推荐阅读