重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
$array = [1,2,3,4,5,6,7,8,9,5,4,4,4,3,2];
成都创新互联是一家专注于网站设计制作、网站建设与策划设计,团风网站建设哪家好?成都创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:团风等地区。团风做网站价格咨询:13518219792
$exist = [];
$repeat = [];
foreach($array as $v){
if(in_array($v,$exist)){
array_push($repeat,$v); //不存在的放入exist中
}else{
array_push($exist,$v); //已存在的放入repeat中
}
}
var_dump($repeat); //repeat即为重复的数据
$unique_repeat = array_unique($repeat); //如果多次重复的值只取一次,可以去重一下
var_dump($unique_repeat);
?php
$check = $list = array();
$end = 41;
for ($i = 1; $i $end; $i++)
{
for ($j = $i + 1; $j $end; $j++)
{
if ( ! empty($check[$i][$j]) OR ! empty($check[$j][$i])) continue;
for ($k = $j + 1; $k $end; $k++)
{
if ( ! empty($check[$i][$k]) OR ! empty($check[$k][$i]) OR ! empty($check[$j][$k]) OR ! empty($check[$k][$j])) continue;
$check[$i][$j] = $check[$i][$k] = $check[$j][$i] = $check[$j][$k] = $check[$k][$i] = $check[$k][$j] = 1;
$list[] = $i.'_'.$j.'_'.$k;
break;
}
}
}
print_r($list);
说下思路:
1. 将生成的数字保存到mysql数据库,然后每次生成的号码不能与数据库的数字重复,请问怎么弄?
先读取数据库已存在的数字,将结果以数组格式,与rand(1,1000)的数组相比较计算差集,去除这部分数字(array_diff),再shuffle,得到新的随机数。
我觉得,你完全可以建立一个序号表,比如,1-1000,每次用时先用随机函数取(1-数据记录数)个数值,再用这个数值取得相应的记录,当取出之后,删除这个记录,这样保证记录总数一直会减少且数字也不会重复。
2. 有没有什么办法生成的时候先生成一位数的,一位数生成满了以后再生出两位数的,两位数满了然后再三位数的,以此类推?
先获取一位数的记录,再从中随机抽取一个,如果数据库中没有找到一位数的,就递增一位数,直到找到为止。
3. 代码的执行效率希望能越高越好!
如果想要代码执行效率,最好尽量减少与数据库的交互。
php生成6位不重复的字符串,用到的工具:notepad++,步骤如下:
php代码部分:
?php
echo "刷新输出不同的六个字符组合:".substr(md5(microtime(true)), 0, 6);
?
说明:此函数先获取当前时间,然后通过md5进行加密,然后再通过substr截取六位数,当前时间是不会重复的,从而保证生成的六个字符串永远不会重复。
效果图:
注意事项:此代码必须在php环境下运行。