0

現在、配列から複数の値を選択するコードがあり、配列から単一の値のみを選択するように切り替える方法を考えていました。

これまでのところ、に変更しようとしarray_rand($status, rand(2,3))ましarray_rand($status, rand(1,1))たが、エラーメッセージが表示されます **無効な引数が foreach()** に提供されました。どうすれば解決できますか?

$dateStart = new DateTime();
$dateStart->setDate(2012, 10, 01);
$dateEnd = new DateTime();
$dateEnd->setDate(2012, 12, 01);

$dates = array();
while ( $dateStart < $dateEnd ) {
   $rand = array_rand($status, rand(2,3));
   $text = '';
   foreach ( $rand as $key ) $text .= $status[$key] . '<br />';

   printf("<li><div id='activity_date'>%s</div>
           <div id='activity_box'>
           <div id='activity_text'>" . $text . ' request</div></div></li>',

   $dateStart->format("d/m/Y")
   );

   $dateStart->modify(sprintf("+%d day",mt_rand(1, 10)));
}
4

2 に答える 2

1
$rand = array_rand($status);

私は自分が少しばかだと感じます。

この方法でコードを変更します。

$rand = array_rand($status);
$text = $status[$rand] . '<br />';
于 2012-11-07T18:37:10.733 に答える
1

foreach を保持したい場合array_randは、 から配列を確実に取得する必要があります。1 つの方法は次のようになります。

$rand[] = array_rand($status);
foreach($rand as $key) { ... }

常に 1 つのランダムな配列メンバーのみが必要な場合は、@Gianps の方が優れたアプローチです。を失うforeach

于 2012-11-07T18:39:15.233 に答える