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

PHPの質問です

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

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

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

●質問者: korokuro
●カテゴリ:ウェブ制作
✍キーワード:PHP ひとつ ランダム 並べ替え 初心者
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● GEN111
●15ポイント

<?php

$a = ’ABCDE’ ;


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

shuffle($tmp) ;

$a = implode($tmp) ;


print $a ;

?>


文字列ならこんな感じ。

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

◎質問者からの返答

ありがとうございます

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

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

xxx


2 ● GEN111
●20ポイント

<?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) . ’ ’ ;

}

?>


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

◎質問者からの返答

ありがとうございます

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


3 ● english
●35ポイント

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

◎質問者からの返答

ありがとうございます

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

関連質問


●質問をもっと探す●



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