人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

下記の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]");
?>

●質問者: praide
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:DOUBLE PHP print Rand スクリプト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● m-nisi
●10ポイント

<?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/

◎質問者からの返答

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

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


2 ●
●10ポイント

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

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

(文字コードの部分は適宜修正してください。以下では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;
?>

参考になれば幸いです。

◎質問者からの返答

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


3 ● ヨネちゃん
●60ポイント ベストアンサー

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

<?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

◎質問者からの返答

良い感じです。

ありがとうございます。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ