![]() |
| カレッヂ |
質問者 うさぎや
投稿日 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裏技 |