PHP隨機讀取TXT文件的某一行,基本思路是這樣的:獲得總行數(shù)、產(chǎn)生隨機數(shù)、獲得隨機行,例子代碼如下:
目前成都創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)絡空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設計、隆陽網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
?php
$f='1.txt';//文件名
$a=file($f);//把文件的所有內(nèi)容獲取到數(shù)組里面
$n=count($a);//獲得總行數(shù)
$rnd=rand(0,$n);//產(chǎn)生隨機行號
$rnd_line=$a[$rnd];//獲得隨機行
echo?"$rnd?/?$n?:?$rnd_line?\n";?//顯示結果
?
以上程序在我的電腦上執(zhí)行幾次的結果如下:
E:\TEMP\文件\expa.php
1?/?8?:?[00:05.33]你拿什么來愛我2
E:\TEMP\文件\expa.php
3?/?8?:?acfp6o7ib----803sb7rmvz----1525175080=
E:\TEMP\文件\expa.php
1?/?8?:?[00:05.33]你拿什么來愛我2
E:\TEMP\文件\expa.php
1?/?8?:?[00:05.33]你拿什么來愛我2
E:\TEMP\文件\expa.php
5?/?8?:?bxi2jw97----0vaf3bw17s----1525184793=
它的用法也很簡單:array_rand($arr[, $num])$arr == 用來取元素的數(shù)組$num == 隨機取下標的個數(shù)其中第二個參數(shù) $num 是可選的,默認為1 。注意:它的返回值在第二個參數(shù)大于 1 的時候是一個數(shù)組;當?shù)诙€參數(shù)不設或者傳值 1 的時候是一個下標。簡單的示例代碼如下:1、第二個參數(shù)不傳值的情況;$arr = Array('a', 'b');$rndKey = array_rand($arr);echo $arr[$rndKey];//輸出 a 或者 b2、第二個參數(shù)傳值大于 1 的情況;$arr = Array('a', 'b', 'c', 'd');$rndKey = array_rand($arr, 2);print_r($rndKey]);//輸出一個隨機key的數(shù)組
針對單獨訪客來存儲該訪客訪問過的紀錄, 只是能COOKIE了, 但這樣的話清除瀏覽器COOKIE后就無效了. 大致思路是這樣, 具體可能會有些邏輯需要優(yōu)化.
?php
//訪問
if?(!isset($_COOKIE["visited"])?{
$_COOKIE["visited"]?=?"";
}
if?($_COOKIE["visited"]?!=?"")?{
$sql?=?"select?*?from?table?where?id?not?in?("?.?$_COOKIE["visited"]?.?")?order?by?rand()?limit?1";
}?else?{
$sql?=?"select?*?from?table?where?order?by?rand()?limit?1";
}
//訪問取出紀錄后,?得到該條紀錄的ID?$id,?將ID存入COOKIE
if?($_COOKIE["visited"]?==?"")?{
$_COOKIE["visited"]?=?$id;
}?else?{
$_COOKIE["visited"]?.=?","?.?$id;
}
/**
*?MySQL?隨機取記錄
*?
*?@param?$t?表
*?@param?$c?ID列,默認為id
*?@param?$n?取多少個
*?@param?$w?條件語句
*?@param?$f?bool?是否強制以多維數(shù)組形式返回,默認false
*?@return?array?取1個直接返回結果數(shù)組(除非$f為true),取1個返回多維數(shù)組,用foreach取出
*/
function?rand_row($t?,?$c?=?'id'?,?$n?=?'1',?$w?=?''?,?$f?=?false)?{
$m=new?mysqli(mysqli信息,自行查找php文檔);
if?(!empty($w))?{
$w?=?'?AND?'.$w;
}
$sql?=?"SELECT?*?FROM?`{$t}`?WHERE?{$c}?=?(SELECT?floor(RAND()?*?(SELECT?MAX({$c})?FROM?`{$t}`)))?{$w}?ORDER?BY?{$c}?LIMIT?{$n};";
$xq??=?$m-query($sql);
$r???=?array();
while?($x?=?$m-fetch_array($xq))?{
$r[]?=?$x;
}
if?($f?==?false??count($r)?==?1)?{
return?$r[0];
}?else?{
return?$r;
}
}