php4.2 win


配列とランダムを使います。

$box[1]=1;
$box[3]=3;
$box[4]=4;
$box[7]=7;
とします。

①この4つの中からランダムで3つを選び、値(1,3,4,7の内の3つ)を配列にします。
※この式をおねがいします

②ランダムで3つ選んだ数字を下記のユーザー定義関数に対応させます。
1の場合は function test01() を
3の場合は function test03() を
4の場合は function test04() を
7の場合は function test07() を

例えば、1,4,7が選ばれた場合は
test.php
=====================
test01();
test04();
test07();
=====================

と表示されるようにするには
どうすればいいですか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/05/17 17:36:59
  • 終了:2007/05/24 17:40:03

回答(2件)

id:Yota No.1

Yota回答回数453ベストアンサー獲得回数282007/05/17 18:29:09

ポイント35pt

こんなのでどうでしょう。

$box[1] = 1 ;

$box[3] = 3 ;

$box[4] = 4 ;

$box[7] = 7 ;

function test01() { echo "test01
" ; }

function test03() { echo "test03
" ; }

function test04() { echo "test04
" ; }

function test07() { echo "test07
" ; }

$rand_keys = array_rand ($box,3) ;

foreach($rand_keys as $val) {

switch($box[$val]) {

case 1: test01();break;

case 3: test03();break;

case 4: test04();break;

case 7: test07();break;

}

}


参考

http://www.php.net/manual/ja/function.array-rand.php

id:rrr3

とてもわかりやすかったです。

ありがとうございます。

2007/05/17 18:50:04
id:GEN111 No.2

GEN111回答回数472ベストアンサー獲得回数582007/05/17 18:36:32

ポイント35pt
$box[1]=1;
$box[3]=3;
$box[4]=4;
$box[7]=7;

$get = $box ;     // $get に配列 $box をコピー
shuffle($get) ;   // シャッフル
array_pop($get) ; // ひとつ取り除く
sort($get) ;      // 必要があればソート

foreach($get as $one) {
  eval("test0$one();") ; // 対応した関数を実行
}

こんな感じでしょうか。


PHP: eval - Manual

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません