首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php合并号码(邮政编码)

Php合并号码(邮政编码)
EN

Stack Overflow用户
提问于 2013-10-17 08:44:47
回答 2查看 254关注 0票数 0

我有一个php数组,其中包含从db查询返回的php代码。邮政编码是德国格式的,长度为5位。

示例:

代码语言:javascript
复制
array ('90475', '90419', '90425', '90415', '90429', '90479', '90485');

我想用占位符将这些值合并为“range”,例如:

代码语言:javascript
复制
 array ('90...', '904..', '9041.', '9042', '9047.');
 //90485 is left out because there is only 1 match. 

编辑/逻辑:这是一个自动建议搜索。试图构建一棵树,这样用户就可以搜索与以90或904开头的任何邮政编码匹配的条目,等等。为了使自动完成有意义,我只想提供“9041”。如果至少有两个匹配项(例如90419和90415 ),则为。从00000到99999,邮政编码总是5位数长.

非常感谢你的帮助。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-17 08:58:15

代码语言:javascript
复制
$myArray = array ('90475', '90419', '90425', '90415', '90429', '90479', '90485');

$consolidate = array();
foreach($myArray as $zip) {
    for ($c = 2; $c < 5; ++$c) {
        $key = substr($zip, 0, $c) . str_repeat('.',5 - $c);
        $consolidate[$key] = (isset($consolidate[$key])) ? $consolidate[$key] + 1 : 1;
   }
}

$consolidate = array_filter(
    $consolidate,
    function ($value) {
        return $value > 1;
    }
);
var_dump($consolidate);
票数 0
EN

Stack Overflow用户

发布于 2013-10-17 08:56:25

给你:

代码语言:javascript
复制
$length = 5;

$zip = array('90475', '90419', '90425', '90415', '90429', '90479', '90485');

$result = array();

for ($i = 2; $i <= $length - 1; $i++) {
    $pass = array();

    foreach ($zip as $val) {
        $pass[substr($val, 0, $i)]++;
    }

    foreach ($pass as $key => $val) {
        if ($val > 1) {
            $result[] = $key.str_repeat('.', $length - $i);
        }
    }
}

sort($result);

var_dump($result);

这将在$result中返回一个数组:

数组(‘90.’、‘904.’、'9041.‘、'9042’、'9047.');

在$result数组中,只使用一次的每个范围都将被忽略而不返回。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19421982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档