こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

10行単位の文字列をランダムに表示するには

10行単位になっている文字群をランダムに表示したいのですが。

たとえば、文字列や数字の列、スクリプトなどが、10行単位でdata.txtに入っています。
ランダムに、その文字列を10行単位で表示する方法です。
こんな形で、呼び出し行を入れてブラウザに表示したいです。

<?php require("data.txt"); ?>

具体例でいいますと、強大なサイトを数名で作っていて、それぞれのアカウントのアドワース広告をランダムに表示したいなどという場合です。

ひとかたまり10行の広告が7つあれば、70行です。
それをランダムに10行単位で呼び出せば可能かと思うのですが。

バナーやテキストのランダム広告はたくさんありますが、今回のようなものは探してもないので、教えていただけるとありがたいです。

もちろんもっといい方法があれば歓迎です。

よろしくお願いいたします。

投稿日時 - 2009-12-09 15:33:16

QNo.5509785

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

40行までは、確認してますが、70行でも同じだと思います。
以下でいかがでしょうか?

<?php
$lineArray=array();//読み込んだ行を入れ込む、配列生成
$data=array(1,11,21,31,41,51,61);//開始行を指定し、
$num=rand(0,6);//0,1,2,3,4,5,6の乱数発生
$n=0;//行数のカウンター
$file=fopen('pro.txt','r');//読み込み対象ファイル名を、pro.txtとする
flock($file,LOCK_SH);
while (!feof($file)){//行末まで、1行単位で、読み込む
$line=fgets($file);
$n++;//行数をカウント
array_push($lineArray,$line);//配列$lineArrayに、push
}

for ($i=$data[$num];$i<=$data[$num]+9;$i++){//乱数で、開始行を、指定し、+9行分を、for文で廻す
print '行番号'.$i.'の内容は、'.$lineArray[$i-1].'<br>';
}
flock($file,LOCK_UN);
fclose($file);

投稿日時 - 2009-12-10 18:29:04

ANo.1

どのように保存されているかにもよりますけど、
ファイルの中に70行あるのでしたら、
file関数で取得
shuffle関数で並び順をランダムにする。
後は、適当に10個ずつ表示していけばいいと思います。

投稿日時 - 2009-12-10 01:21:54

補足

回答ありがとうございます。

10行の広告は、プログラムですので、順番が入れ替わってしまってはダメです。

1、11、21、・・・61行目から一つ選んで、そこから10行を抜き出してそのまま表示させたいのです。

説明が悪くて申し訳ありませんでした。

投稿日時 - 2009-12-10 10:28:48

あなたにオススメの質問

-広告-
-広告-