http://jp2.php.net/manual/ja/function.array-rand.php
PHP: array_rand - Manual
URLは以下の関数のマニュアルです。
array_rand -- 配列から一つ以上の要素をランダムに取得する
<?php
//テキストファイル
$file = ”./animals.txt”;
$words = file($file);
print array_rand($word);
?>
PHPで、乱数を発生させるのには、
<?php
srand((double) microtime() * 1000000);
$janken[0] = ”グー”; $janken[1] = ”チョキ”; $janken[2] = ”パー”;
echo $janken[rand(0, 2)];
?>
などとします。
この例では、srand((double) microtime() * 1000000)で初期化して、rand(0, 2)で0から2の乱数を得ています。
今回の例では、動物.txtの要素の数で、乱数を作ることになります。
動物の要素が配列 $dobutuに格納されているとすれば、その要素数はcount($dobutu)ですので、配列の添え字は 0からcount($dobutu) です。
したがって、乱数はrand(0, count($dobutu))で求めればよいことになります。
動物.txtから配列 $dobutuを作る方法は、動物.txtのフォーマットに依存しますので、ここでは説明しませんが、わかりますよね。
PHP: PHP マニュアル - Manual
おまけです。
PHPのマニュアルです。ご参考までに。
http://www.hatena.ne.jp/1065389330#
PHPスクリプトで、サーバーにUPしてあるテキストの中から、ランダムに文字を表示させるにはどのようなプログラムを具体的に書けばいけますか? 具体的には、例えば「動.. - 人力検索はてな
URLはダミーです。
●動物.txtの中は下記の通り
たぬき
きつね
ねこ
●スクリプト
<?php
$arr = file(”動物.txt”);
mt_srand((double)microtime()*1000000);
print $arr[mt_rand(0,count($arr)-1)];
?>
で実現できると思います。
Yahoo!
URLはダミーです。
私の環境では動きましたので試してください。
同じ階層にtext.txtを置くと、その中からランダムに
一行表示します。
一行単位で読み込んでいるので、文章の途中で改行は入れないでください。
以下をコピーしてください--------------------
<?php
//┏━━━━━━━━━━━━━┓
//┃テキストランダム表示簡易版┃
//┃ ┃
//┗━━━━━━━━━━━━━┛
//┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//┃ヘッダ表示部
//┃・メタタグ内のcharsetは、文字コードに応じて変える
//┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
print <<<_HTML_
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html ; charset=EUC-JP”>
<title>ランダム表示</title>
</head>
_HTML_;
//┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//┃メイン
//┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
$txt = fopen(”./text.txt”,’r’); //テキストファイルオープン(default:./text.txt)
while(!feof($txt)){
$line = fgets($txt,1000); //一行の読み込むバイト数(default:半角1000文字)
$line = trim($line);
if($line == ””){continue;} //空行無視処理
$data[] = $line;
}
$count = count($data) - 1;
$no = mt_rand(0,$count);
$out_txt = $data[$no];
print ”$out_txt”; //出力部
//┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//┃フッダ表示部
//┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
print <<<_HTML_
</body>
</html>
_HTML_;
?>
ここまで---------------------------
すごく丁寧に教えていただいて、またそちらの環境でも試していただいてありがとうございました!