下記のランダム表示のPHPなのですが
列を指定しているのはどの部分になりますでしょうか?
もしくは指定できていない状態ならどう書き足せば良いでしょう?
教えて下さい。
<?php
// rndtxtには、テキストを入れる。改行はしないようにする
// テキストを増やしたりする場合は、"[ ]"の数字が0から順になるようにする
$rndtxt[0] = 'テキスト1';
$rndtxt[1] = 'テキスト2';
$rndtxt[2] = 'テキスト3';
$rndtxt[3] = 'テキスト4';
$rndtxt[4] = 'テキスト5';
$rndtxt[5] = 'テキスト6';
$rndtxt[6] = 'テキスト7';
for ($i = 1 ; $i <= 3 ; $i++){
$length = count($rndtxt) - 1;
srand( (double)microtime()*1000000 );
$num=round( rand(0,$length) );
print("$rndtxt[$num]");
if ($i % 1 == 0){
print"<br>";
} else {
print" ";
}
for ($j = $num ; $j <= $length ; $j++){
$rndtxt[$j] = $rndtxt[$j+1];
}
unset($rndtxt[count($rndtxt) - 1]);
}
?>
$num=round( rand(0,$length) );
の行の
rand(0,$length)
です。
ちなみに、php4.2以降ではsrand()の行は不要です。
また、rand()を囲むround()は不要です。rand()は整数を返すので。
なお、mt_rand関数の方がオススメです。
rand(0,$length) を mt_rand(0,$length) に書きかえるだけです
for ($i = 1 ; $i <= 3 ; $i++){
の
$i <= 3
が表示する総数を指します。
1行に表示する列の数を指定しているのは
if ($i % 1 == 0){
の部分で、
$i % 2 == 0
とすれば2列で表示されます。
その場合は
$i <= 3
も2の倍数にしたほうが良いかも知れません。
なるほど。解りやすい。ありがとうございます。
for ($i = 1 ; $i <= 3 ; $i++){
この部分の「3」が出力する項目数。
if ($i % 1 == 0){
この部分は変更されたのでしょうか?
意味のない条件になっています。
「1」が出力する列数になります。
つまり、この設定では3つの項目が1行に1つずつ表示されます。
たとえば、6つの項目を2つずつ表示するには、上記をそれぞれ
「6」、「2」に変更すれば良いです。
なるほど。解りやすい。ありがとうございます。
的確なアドバイスありがとうございます。