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

PHP实现网站列表表格域名去重,仅随机显示单域名条目

解决PHP网站表格域名重复问题:每个域名仅随机显示一条记录

我来帮你搞定这个同域名重复展示的问题!核心思路很简单:先把所有网站按域名分组,然后从每个域名组里随机挑一条记录出来,这样就能保证每个域名只会出现一次,而且每次刷新都是随机的条目。

下面是修改后的完整代码,我会一步步解释逻辑:

<?php
// 假设这是你从后台获取的网站数据(实际项目中替换成你的数据源)
$websites = [
    ['link' => 'https://yahoo.com/news', 'name' => 'Yahoo News,Yahoo Headlines'],
    ['link' => 'https://yahoo.com/mail', 'name' => 'Yahoo Mail,Yahoo Inbox'],
    ['link' => 'https://google.com/search', 'name' => 'Google Search,Google Web'],
    ['link' => 'https://google.com/maps', 'name' => 'Google Maps,Google Locations'],
];

// 第一步:按域名分组所有网站
$groupedWebsites = [];
foreach ($websites as $website) {
    // 提取域名,用@抑制解析错误(比如无效链接)
    $domain = @parse_url($website['link'])['host'];
    // 只处理能解析出域名的条目
    if ($domain) {
        $groupedWebsites[$domain][] = $website;
    }
}

// 第二步:每个域名随机选一条记录
$uniqueDomainWebsites = [];
foreach ($groupedWebsites as $domainEntries) {
    // 随机选一个组内的条目索引
    $randomIndex = array_rand($domainEntries);
    $uniqueDomainWebsites[] = $domainEntries[$randomIndex];
}

// 可选操作:打乱最终结果的顺序,避免域名按字母排序展示
shuffle($uniqueDomainWebsites);
?>

<!-- 输出表格部分 -->
<table border="1">
    <thead>
        <tr>
            <th>网站名称</th>
            <th>链接</th>
            <th>域名</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($uniqueDomainWebsites as $website): ?>
            <?php
            // 保留你原来的随机名称逻辑:逗号分隔多值随机选一个
            $nameList = explode(',', $website['name']);
            $randkey = trim($nameList[array_rand($nameList)]);
            $domain = @parse_url($website['link'])['host'];
            ?>
            <tr>
                <td><?= $randkey; ?></td>
                <td><a href="<?= $website['link']; ?>" rel="noopener noreferrer"><?= $website['link']; ?></a></td>
                <td><?= $domain; ?></td>
            </tr>
        <?php endforeach; ?>
    </tbody>
</table>

关键逻辑说明:

  1. 域名分组:通过遍历原数据,把同一个域名下的所有网站条目归到一起,这样我们就能对每个域名单独处理。
  2. 随机选条:对每个域名组,用array_rand随机挑选一条记录,确保每个域名只会出现在最终列表里一次。
  3. 容错处理:加了if ($domain)判断,跳过那些无法解析出域名的无效链接,避免出现空域名的条目。
  4. 保留原有功能:完全保留了你原来的随机名称选取逻辑,逗号分隔的名称依然会随机展示其中一个。

这样修改后,每次运行代码时,每个域名只会随机显示一条对应的条目,再也不会出现重复的域名啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:15:54