我想要在WHMCS客户区域通过下面的代码获得域雕像,但它的输出显示重复的值,有任何帮助,以便我可以删除重复的值。
{foreach key=num item=status from=$domains}
<li><a href="#"><span>{$status.statustext}</span></a></li>{/foreach}
输出如下,但我不希望重复的值,如挂起2倍或更多,如果更多的域是挂起。
发布于 2019-05-20 07:32:45
我建议使用栏()提取每个域的statustext。这将为您提供一个新的数组,您可以使用唯一()或值()轻松地从其中删除任何重复的值。以下是实现这一目标的几种方法:
将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()相结合以删除重复项。由于您正在从多个域聚合数据,因此对每个状态进行计数可能会很有用。将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}
https://stackoverflow.com/questions/56218910
复制