我想在下面的数组上创建一个克隆函数,
$usernames = array ( 'jack', 'amy', 'chris');使:
克隆杰克,将导致jack-1 (因为jack-1还不存在于用户名数组中)。一旦克隆完用户名数组,就应该更新为:
$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来完成这个任务,但是我想找到一种有效的方法来完成这个任务。
谢谢,
发布于 2013-11-14 21:52:01
基于Sajan的逻辑,如果我这样修改逻辑,它就会根据需求工作。复制原来的用户名并重新解析原始数组,就能做到这一点。
$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));发布于 2013-11-14 17:33:39
我已经测试过了,效果很好。
首先,我们检查这个值是否已经存在,如果它不存在,我们只需要继续添加它。
如果它确实存在,我们将增加一个破折号到它。我们一直递增,直到到达一个不加exist...then的值,然后再添加它。
<?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));https://stackoverflow.com/questions/19984253
复制相似问题