![]() |
カレッヂ |
質問者 うさぎや
投稿日 1/27(月) 17:35:31
データーファイル(CSV形式)を開き @tatoeba に代入した時に この@tatoebaに10行のデーターがあって その中から 1つ(1行) 選択するためには どうすればいいか悩んでします。 いわゆる おみくじのような物なのですが さっぱり分からず 本を読んでいたら 上記の場合 $SENTAKU = $tatoeba [ (int) rand ($#tatoeba) ]; といった感じで良いようなのですが エラーばかり出てしまいます。 考え方として @tatoebaに 大吉,ラッキー,おめでとう 中吉,やったね,まずまずだ が入っていて 上記1文で $sentaku に 大吉,ラッキー,おめでとう が 入って 後は これを 表示するパートに渡せばいいと 考えています いったいどこがダメなのか???です どなたか ご教授お願いいたします。
プロバイダ参照:q-car@q-car.com |
回答者 しあわせのツボ
[削除]
投稿日 1/27(月) 18:34:11
> $SENTAKU = $tatoeba [ (int) rand ($#tatoeba) ]; これは $SENTAKU = $tatoeba[int(rand($#tatoeba))]; ですね。 |
質問者 うさぎや
[削除]
投稿日 1/27(月) 22:51:53
ありがとうございます。 エラーは回避できましたが 同じ物ばかりでます。 たぶん初期化の問題かと思うのですが 今回のCGIでは たくさんの行のCSVデーターから 一定条件にあった行を 抽出し @配列に格納しています。 さらにその中から 1個だけをランダムに選び出し 表示させようと思っています。 @配列への格納まではきっちり出来ています。 CGIの中身としては ########### ファイル取得 ########### if(!open(A,$datafile)){ print "データファイルを開けません。<hr size=1>"; print "ファイルが存在なし<hr size=1>" if ! -e $datafile; print "初期設定の問題あり<hr size=1>" if ! -r $datafile; exit; } @list=<A>; close(A); ################# 条件抽出 リスト23番目############## foreach $g(@list){ @y=split(/\,/,$g); if($y[23] eq "$kigou"){push(@tyusyutu,$g);}else{next;} } ################## @tyusyutuの中から1つ選択 ################ $line = $tyusyutu[int(rand($#tyusyutu))]; 以下 表示部へと$lineを渡すようにしています 初期化が必要な場合 どこに srand関数を どういった構文で 入れればよいでしょうか すいませんが よろしくお願いいたします 基本的に間違っている部分がありましたら ご指摘下さい よろしくお願いいたします |
回答者 いのちゃん
[削除]
投稿日 1/28(火) 04:11:35
>一定条件にあった行を 抽出し @配列に格納しています。 >さらにその中から 1個だけをランダムに選び出し >表示させようと思っています。 http://www.kcb-net.ne.jp/ki-net/webaccess/ 本日の運勢 “おみくじを引く”を設定しておりますが、ランダムに抽出が出来ます。 こんな感じでしょうか? 一度運勢を占って見て下さい。なお、表示(V)→ ソース(C)でスクリプトを見てご参考になれば幸いです。 それとランダムで表示するものの2つ目として以下のurlの上の部分にもrandomの 記述がありますので“Msytery Link”と合わせて上下1組として見て下さいね。 http://www.kcb-net.ne.jp/ki-net/page2_4.html ずーと下の端にスクロールすると“Mystery Link”と言うバーがありますので これをクリックすると任意に抽出します。色々出て来ますのでやってみて下さい。 同じく表示(V)→ソース(C)でスクリプトを見て頂いてご参考になれば幸いです。 |
返信(回答)する
Web裏技 |