$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環境下運行。