首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写克隆函数以生成唯一名称

编写克隆函数以生成唯一名称
EN

Stack Overflow用户
提问于 2013-11-14 17:23:50
回答 2查看 45关注 0票数 0

我想在下面的数组上创建一个克隆函数,

代码语言:javascript
复制
$usernames = array ( 'jack', 'amy', 'chris');

使:

克隆杰克,将导致jack-1 (因为jack-1还不存在于用户名数组中)。一旦克隆完用户名数组,就应该更新为:

代码语言:javascript
复制
$usernames = array ( 'jack', 'amy', 'chris', 'jack-1');

Cloning jack, (again) would result in jack-2

Cloning jack-1, would result in jack-1-1
Cloning jack-1-1, would result in jack-1-1-1
Cloning jack-1-1 (again), would result in jack-1-1-2
Cloning jack-1-1-1 would result in jack-1-1-1-1

等等等等..。

我可以使用in_array来完成这个任务,但是我想找到一种有效的方法来完成这个任务。

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-14 21:52:01

基于Sajan的逻辑,如果我这样修改逻辑,它就会根据需求工作。复制原来的用户名并重新解析原始数组,就能做到这一点。

代码语言:javascript
复制
$array = array('jack', 'sally');

function cloneFunction($value, $array)
{
    if (!in_array($value, $array))
    {
        $array[] = $value;
    }
    else
    {
        $i = 0;
        $j = 0;

        while(in_array($value, $array))
        {
            $i++;
            $value = $value . '-' . $i;

            $stagedValue = $value;
            while(in_array($value, $array))
            {
                $j++;
                $value = $stagedValue . '-' . $j;
            }
            $j = $i;
        }

        $array[] = $value;
    }

    return $array;
    // Do return $value if you just want the value.
}

print_r(cloneFunction('jack', $array));
票数 1
EN

Stack Overflow用户

发布于 2013-11-14 17:33:39

我已经测试过了,效果很好。

首先,我们检查这个值是否已经存在,如果它不存在,我们只需要继续添加它。

如果它确实存在,我们将增加一个破折号到它。我们一直递增,直到到达一个不加exist...then的值,然后再添加它。

代码语言:javascript
复制
<?php

$array = ['jack', 'sally'];

function cloneFunction($value, $array)
{
    if (!in_array($value, $array))
    {
        $array[] = $value;
    }
    else
    {
        $i = 0;

        while(in_array($value, $array))
        {
            $i++;
            $value = $value . '-' . $i;
        }

        $array[] = $value;
    }

    return $array;
    // Do return $value if you just want the value.
}

print_r(cloneFunction('jack', $array));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19984253

复制
相关文章

相似问题

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