PHPの質問です


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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:GEN111 No.1

回答回数472ベストアンサー獲得回数58

ポイント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

回答回数472ベストアンサー獲得回数58

ポイント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

回答回数304ベストアンサー獲得回数0

ポイント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

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

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

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

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

回答リクエストを送信したユーザーはいません