みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

多次元配列を[キー:値]の形でランダム表示に

<?php
$fruit = array(
'apple' => array('ふじ','ジョナゴールド'),
'orange' => array('みかん','バレンシア'),
'grape' => array('巨峰','マスカット')
);
foreach ($fruit as $key => $value) {
foreach ($value as $key2 => $value2) {
echo '<p>' . $key . ' : ' . $value2 . '</p>' . "\n";
}
}
?>

上記コードにて多次元配列をループさせて以下の様に表示させています。

apple : ふじ
apple : ジョナゴールド
orange : みかん
orange : バレンシア
grape : 巨峰
grape : マスカット

これを下の様にシャッフルした形でランダムに表示させたいと思い、自分なりに試行錯誤してみたのですが、思うような結果を出す事が出来ずに悩んでいます。
何か良い方法がありましたらアドバイスを頂ければと思います。
よろしくお願い致します。

grape : 巨峰
apple : ふじ
orange : みかん
grape : マスカット
orange : バレンシア
apple : ジョナゴールド

投稿日時 - 2013-03-02 19:10:33

QNo.7972889

困ってます

質問者が選んだベストアンサー

単純に「配列に入れてからシャッフルする」のではダメですか?

<?php
$fruit = array(
'apple' => array('ふじ','ジョナゴールド'),
'orange' => array('みかん','バレンシア'),
'grape' => array('巨峰','マスカット')
);
$output = array();
foreach ($fruit as $key => $value) {
foreach ($value as $key2 => $value2) {
$output[] = '<p>' . $key . ' : ' . $value2 . '</p>';
}
}
shuffle($output);
print implode("\n", $output);
?>

なお「ランダム」なのでたまたま同じカテゴリが続くことは避けられません(汗

投稿日時 - 2013-03-02 19:44:00

お礼

一体どこをどうソートしたら良いのだろうとずっと悩んでいましたが、一度配列に入れてしまえば良かったのですね。
初歩的な事なのかもしれませんが、またひとつ学ぶ事ができて良かったです。

この度のご回答に感謝致します。
ありがとうございました!

投稿日時 - 2013-03-02 22:25:21

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問