php - 需要 WHMCS 客户端区域的 Smarty 输出帮助
问题描述
我想通过使用下面的代码在 WHMCS 客户区获取域状态,但它的输出显示重复值,有什么帮助我可以删除重复值。
{foreach key=num item=status from=$domains}
<li><a href="#"><span>{$status.statustext}</span></a></li>{/foreach}
输出如下,但如果有更多域待处理,我不希望重复值,如待处理 2 次或更多。
解决方案
我建议使用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}
推荐阅读
- powershell - 为 Invoke-WebRequest 下载路径使用变量
- python - Python/numpy 点列表到黑白图像区域
- flask - Flask restx 返回 Class 而不是实际的返回字符串
- postgresql - 在 postgres 中合并时间戳间隔
- c++ - 指向向量中对象的指针有时指向向量中的不同对象
- java - 使用 android App 在 esp32 M5Stack 相机上设置 http 设置
- discord.js - Discord.js - JSON 解析?
- python - 如何通过Django中另一个列表中的变量访问字典值
- java - 使用 MapBox 启动 Navigation UI 导致意外崩溃
- r - 在 GLM 之前组织因子变量适合 R