【问题标题】:How to count string length of a domain list and group them by length?如何计算域列表的字符串长度并按长度分组?
【发布时间】:2011-04-27 02:27:36
【问题描述】:

我有一个域名列表,例如:

domain1.com
domain2.com
domainxxx2.com
dom.com

从我想得到的列表中:

length 7 [2]
length 10 [1]
length 3 [1]

我知道如何拆分 tld 并计算每个域的长度,但不知道如何对具有相同长度的域进行分组和计算。

我想在 PHP 上做。

【问题讨论】:

    标签: php arrays string count string-length


    【解决方案1】:

    更快更干净,但仍未经测试

    $sorted = array();
    foreach($domains as $domain)
    {
        $sorted[strlen($domain)][] = $domain;
    }
    

    【讨论】:

    • 是的,在执行速度方面绝对比我的快。 :) 当我将我的描述为“快速”时,我指的是我考虑解决方案所花费的时间。
    • 是的,这很清楚。不知道为什么我像以前那样在代码前加了前缀。
    【解决方案2】:

    快速、肮脏且未经测试:

    $lengths = [];
    for ($i = 1; $i <= 255; $i++) {
        foreach ($domains as $domain) {
            if (strlen($domain) === $i) {
                $lengths[$i][] = $domain;
            }
        }
    }
    

    【讨论】:

    • 改用 Pickle 的答案。它要快得多。
    • 没有使用你的代码,但它帮助我把它放在一起: [foreach($domains as $domain) { $tmp = explode(".", $domain); $length = strlen(trim($tmp[0])); $count[$length] = $count[$length]+1; } print_r($count);]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多