重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

現在、ランダム関数を使用して、配列にある値の中から
ランダムにいくつかの配列を抜き出す処理を行っています。

$rand_keys = array_rand($id,2);
for($k=0;$k<count($rand_keys);$k++){
 $rand_id[$i][$k]=$id[$rand_keys[$k]];
}

ただし、この関数では一つだけ取り出したい場合には使えません。
何かよい方法はありませんか??

A 回答 (2件)

#1です。

こちらこそすいませんでした。不勉強でした。
てっきり・・・1でもキーが取得できると思ってました。
改めて・・・
$rand[$i]が1の場合、$rand_keys[$i]は要素1の配列になることは分かっているので、格好悪いかもしれませんが、
<補足回答より>
$rand[0]=1;
$rand[1]=3;
$rand[2]=2;
$rand[3]=2;
for($i=0;$i<count($rand);$i++){
if($rand[$i] == 1){
$rand_keys[$i]=array( 0 => array_rand($id,$rand[$i]) );
}else{
$rand_keys[$i]=array_rand($id,$rand[$i]);
}
}

でどうでしょうか?今度は自分でもやってみました。
また勘違いしてたらすいません。
    • good
    • 0
この回答へのお礼

すみません。ありがとうございます。
うまくいきました。

お礼日時:2004/12/22 18:58

array_rand($id,2)とあることから、1つか2つの配列の値を取得すればよいのでしょうか。


ならば、array_rand()の第二引数をmt_rand()関数で1か2をランダムに指定すればよいのではないでしょうか。

例)
//乱数ジェネレーターの初期化
mt_srand(microtime());

$second = mt_rand(1,2);

$rand_keys = array_rand($id,$second);
以下同様。

意図的に1つか2つを選びたいなら、同様に$secondに意図的に1か2を代入すればよいでしょう。

やりたいことは合ってますか。

この回答への補足

すみません。説明不足でした。
$rand[0]=1;
$rand[1]=3;
$rand[2]=2;
$rand[3]=2;
for($i=0;$i<count($rand);$i++)
$rand_keys[$i]=array_rand($id,$rand[$i])
}

としたいので、配列の数値は変動します。

ただ、この場合、配列の数値が1の場合($rand[0])
array_rand関数ではキーが取得できません。

補足日時:2004/12/21 12:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!