You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VosCast SHOUTcast库下array_unique无法去重HOSTNAME的解决方法

监听器列表按HOSTNAME去重实现方案

原有代码失效原因

array_unique仅支持对一维数组的标量值做重复校验,传入的$vc_shoutcast->LISTENERS是嵌套结构的多维数组,每个元素为包含多字段的关联数组,无法被函数直接识别比对,因此去重逻辑完全不生效,所有原始条目都会被完整输出。

可直接复用的去重代码

$recordedHosts = [];
$filteredListeners = array_filter(
    $vc_shoutcast->LISTENERS,
    function($item) use (&$recordedHosts) {
        $host = $item['HOSTNAME'];
        // 严格比对HOSTNAME值,已存在的条目直接过滤
        if (in_array($host, $recordedHosts, true)) {
            return false;
        }
        $recordedHosts[] = $host;
        return true;
    }
);

逻辑说明

  • 默认保留同一HOSTNAME下最先出现的连接条目,如需调整保留规则(比如保留连接时长最长、UID最新的条目),可在回调内增加对应字段的比对逻辑
  • 比对过程开启严格模式,避免弱类型隐式转换导致的HOSTNAME误判
  • 处理后的数组会保留原数组的索引结构,可直接替代原始监听器列表做页面渲染

内容的提问来源于stack exchange,提问作者Tommy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 23:45:05