PHPの質問です


ABCDEの中からランダムにひとつ選んで表示するスプリクトはサンプルなどもあるのですが、ABCDEすべてをランダムに並べ替えて表示する方法はどうすればいいのでしょうか?

例えば
ACDEB
EBDCA
このような感じです。

まったくの初心者なので具体的に書いて下さるとうれしいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/03/25 18:44:37
  • 終了:--

回答(3件)

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582005/03/25 19:53:30

ポイント15pt

<?php

$a = ’ABCDE’ ;


$tmp = preg_split( ’//’, $a, -1, PREG_SPLIT_NO_EMPTY) ;

shuffle($tmp) ;

$a = implode($tmp) ;


print $a ;

?>


文字列ならこんな感じ。

最初から配列なら shuffle を使うだけです。

id:korokuro

ありがとうございます

書き方が悪かったので訂正します

AとかBはリンク形式なんです。

xxx

2005/03/25 20:13:43
id:GEN111 No.2

GEN111回答回数472ベストアンサー獲得回数582005/03/25 20:26:45

ポイント20pt

<?php

$a = array (’<a href=”aaa”>aaa</a>’, ’<a href=”bbb”>bbb</a>’, ’<a href=”ccc”>ccc</a>’, ’<a href=”ddd”>ddd</a>’, ’<a href=”eee”>eee</a>’) ;

shuffle($a) ;


while ($a) {

print array_pop($a) . ’ ’ ;

}

?>


状況がもうひとつ分かりませんが、例えばこう?

id:korokuro

ありがとうございます

これで動きますかね?確認してみます。

2005/03/25 21:55:38
id:english No.3

english回答回数304ベストアンサー獲得回数02005/03/25 21:24:53

ポイント35pt

http://jp2.php.net/array_rand

PHP: array_rand - Manual

array_rand()を使えば、できるかと思います。

※もしかしたら、下記コードの中で半角文字がhatenaシステムによって全角に変換されているところがあるようであれば、適宜読み変えてください。


<?php

$url_array = array(’http://www.yahoo.co.jp’,’http://www.infoseek.co.jp’,’http://www.goo.ne.jp’,’http://www.hatena.ne.jp’,’http://www.livedoor.com’);


srand ((float) microtime() * 10000000);


$url_num = count($url_array);


$rand_keys = array_rand ($url_array, $url_num);

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

print $url_array[$rand_keys[$i]] . ”

¥n”;

}


?>


上記プログラムの出力例:(一例。リロードすると異なる結果が表示されます。)

http://www.livedoor.com

http://www.infoseek.co.jp

http://www.yahoo.co.jp

http://www.goo.ne.jp

http://www.hatena.ne.jp

id:korokuro

ありがとうございます

確かめてみます。質問は一旦終了させてもらいます。

2005/03/25 21:56:43

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

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

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

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

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