下記のPHPのランダムのスクリプトがあるのですが

現状、1行1列の表示になっています。
一画面に表示するテキストの数を3行2列で、など指定して表示させたいと考えています。もちろん、テキストの数は増やします。どう追加すればよいでしょうか?詳しい方がいらっしゃいましたら教えて下さい。宜しくお願いします。
<?php
// rndtxtには、テキストを入れる。改行はしないようにする
// テキストを増やしたりする場合は、"[ ]"の数字が0から順になるようにする
$rndtxt[0] = 'テキスト1';
$rndtxt[1] = 'テキスト2';
$rndtxt[2] = 'テキスト3';
$rndtxt[3] = 'テキスト4';
$rndtxt[4] = 'テキスト5';
$length = count($rndtxt) - 1;
srand( (double)microtime()*1000000 );
$num=round( rand(0,$length) );
print("$rndtxt[$num]");
?>

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2006/06/18 19:38:29
  • 終了:2006/06/18 23:26:00

ベストアンサー

id:yoneto164 No.3

ヨネちゃん回答回数813ベストアンサー獲得回数942006/06/18 22:17:13

ポイント60pt

私ならこのような感じにします。

<?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 <= 6 ; $i++){

$length = count($rndtxt) - 1;

srand( (double)microtime()*1000000 );

$num=round( rand(0,$length) );

print("$rndtxt[$num]");

if ($i % 2 == 0){

print"<br>";

} else {

print"&nbsp;";

}

for ($j = $num ; $j <= $length ; $j++){

$rndtxt[$j] = $rndtxt[$j+1];

}

unset($rndtxt[count($rndtxt) - 1]);

}

?>

http://yonetone.com/test/rnd.php

id:praide

良い感じです。

ありがとうございます。

いったん終了させて頂きます。

皆さんありがとうございます。

2006/06/18 23:25:09

その他の回答(2件)

id:m-nisi No.1

m-nisi回答回数159ベストアンサー獲得回数32006/06/18 20:14:52

ポイント10pt

<?php

// rndtxtには、テキストを入れる。改行はしないようにする

// テキストを増やしたりする場合は、"[ ]"の数字が0から順になるようにする

/* 行と列を指定 */

$gyou = 3;

$retu = 2;

$rndtxt[0] = 'テキスト1';

$rndtxt[1] = 'テキスト2';

$rndtxt[2] = 'テキスト3';

$rndtxt[3] = 'テキスト4';

$rndtxt[4] = 'テキスト5';

$rndtxt[5] = 'テキスト6';

$rndtxt[6] = 'テキスト7';

$rndtxt[7] = 'テキスト8';

$rndtxt[8] = 'テキスト9';

$rndtxt[9] = 'テキスト10';

$rndtxt[10] = 'テキスト11';

$rndtxt[11] = 'テキスト12';

$rndtxt[12] = 'テキスト13';

$rndtxt[13] = 'テキスト14';

$rndtxt[14] = 'テキスト15';

$rndtxt[15] = 'テキスト16';

$rndtxt[16] = 'テキスト17';

$rndtxt[17] = 'テキスト18';

$rndtxt[18] = 'テキスト19';

$rndtxt[19] = 'テキスト20';

$length = count($rndtxt) - 1;

srand( (double)microtime()*1000000 );

for ($i = 0;$i < $gyou;$i++) {

for ($j = 0;$j < $retu;$j++) {

$num=round( rand(0,$length) );

print("$rndtxt[$num] ");

}

print("\n");

}

?>

私ならこのような形にします。

http://q.hatena.ne.jp/

id:praide

1行6列で表示されてしまします…

申し訳ありませんが説明のコメントを入れて頂けると助かります。

2006/06/18 22:33:38
id:bonlife No.2

回答回数421ベストアンサー獲得回数752006/06/18 20:50:35

ポイント10pt

以下のようなイメージでいかがでしょうか。

行数、列数を変数で指定して、それに合わせてテーブルで表示します。

(文字コードの部分は適宜修正してください。以下ではUTF-8にしております。)

<?php
// HTML出力用設定
mb_http_output('UTF-8');
header("Content-Type: text/html; charset=UTF-8");
// HTMLのヘッダー部分出力
print <<<EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>列数、行数を指定してランダム表示</title>
<style type="text/css">
  table,td { border-style:solid; border-color:black; border-width:1px; }
  td { padding:0.5em ; }
</style>
</head>
<body>
EOF;
// rndtxtには、テキストを入れる。改行はしないようにする
// テキストを増やしたりする場合は、"[ ]"の数字が0から順になるようにする
$rndtxt[0] = 'テキスト1';
$rndtxt[1] = 'テキスト2';
$rndtxt[2] = 'テキスト3';
$rndtxt[3] = 'テキスト4';
$rndtxt[4] = 'テキスト5';
$length = count($rndtxt) - 1;
$col=4; // 列数を指定
$row=3; // 行数を指定
// 行ごとのループ処理
if ($col > 0 && $row > 0){
	print "<table>\n";
	for ($i=0;$i<$row;$i++){
		print "  <tr>\n";
		// 列ごとのループ処理
		for ($j=0;$j<$col;$j++){
			print "    <td>";
			srand( (double)microtime()*1000000 );
			$num=round( rand(0,$length) );
			print("$rndtxt[$num]");
			print "</td>\n";
		}
		print "  </tr>\n";
	}
	print "</table>\n";
} else {
	print "出力設定が不適切です。";
}
// HTMLのフッター部分出力
print <<<EOF
</body>
</html>
EOF;
?>

参考になれば幸いです。

id:praide

表示される時、同じテキストがかぶらないようにしたいのですが…

2006/06/18 22:50:16
id:yoneto164 No.3

ヨネちゃん回答回数813ベストアンサー獲得回数942006/06/18 22:17:13ここでベストアンサー

ポイント60pt

私ならこのような感じにします。

<?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 <= 6 ; $i++){

$length = count($rndtxt) - 1;

srand( (double)microtime()*1000000 );

$num=round( rand(0,$length) );

print("$rndtxt[$num]");

if ($i % 2 == 0){

print"<br>";

} else {

print"&nbsp;";

}

for ($j = $num ; $j <= $length ; $j++){

$rndtxt[$j] = $rndtxt[$j+1];

}

unset($rndtxt[count($rndtxt) - 1]);

}

?>

http://yonetone.com/test/rnd.php

id:praide

良い感じです。

ありがとうございます。

いったん終了させて頂きます。

皆さんありがとうございます。

2006/06/18 23:25:09

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

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

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

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

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