※ 引述《knives ()》之銘言:
: 如果我要產生一萬筆(可能更多 )
: 而裡面的資料是由
: 一個陣列像這樣
: $my_array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm',
: 'n', 'p', '2', '3', '4', '5','6','7','8','9');
: 利用array_rand的方式 亂數抓10個出來
: 再把它組合成一個字串,再把字串寫入到資料庫去
: 之前,我是在寫入到資料庫的時候,又做一次select count 的sql 查詢
: 可是發現這樣子,整個網頁很容易當(還沒到php 的timeout時間就掛了)
: 拿掉之後,就比較不會當了
: 但是我要怎麼確保這些字串絕對不會重覆到,如果不做查詢的話
tbl
rowStr char(10)
rowRand unsigned int index key
$n=count($my_array);
$a = array_fill(0, 10, 0);
for($i=1;$i<20000;$i++){
$a[0]++;
for($j=0;$j<9;$j++){
if($a[$j]>=$n){
$a[$j]-=$n;
$a[$j+1]++;
}
else break;
}
if($a[9]>=$n)die('error');
$s=$my_array[$a[9]].$my_array[$a[8]].$my_array[$a[7]].$my_array[$a[6]].
$my_array[$a[5]].$my_array[$a[4]].$my_array[$a[3]].$my_array[$a[2]].
$my_array[$a[1]].$my_array[$a[0]];
$sql ='INSERT INTO tbl(rowStr,rowRand) VALUES (';
$sql.='"'.$s.'",ROUND(RAND()*10000)';
$sql.=')';
mysql_query($sql);
}
然後
SELECT rowStr FROM tbl ORDER BY rowRand;
就是你要的了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.76.137.169