-1

前の質問では、残りの変更を自分で追加できないことに気づいていなかったので、ここに私が取り組んでいるものがあります。ユーザー webfix は、これを取得するのに役立ちました:

$mars = array ('How big is Mars?', 'How many moons does Mars have?', 'How far away is Mars?', 'What is the highest point on Mars?');
$jupiter = array ('How big is Jupiter?', 'How many moons does Jupiter have?', 'How far away is Jupiter?', 'What is the highest point on Jupiter?');
$earth = array ('How big is Earth?', 'How many moons does Earth have?', 'How far away is Earth?', 'What is the highest point on Earth?');
$sun = array ('How big is the Sun?', 'How many moons does the Sun have?', 'How far away is the Sun?', 'What is the highest point on the Sun?');

$all = array($mars, $jupiter, $earth, $sun);

function createList($a)
{
echo "<ul>";    
foreach ($a as $array) 
    {
    $questions = count($array);
    $idquestion = rand(0, $questions-1);
    echo "<li>" . $array[$idquestion]  . "</li>";
    }
echo "</ul>";
}

createList($all);

これに、質問の順序のランダム化と、最大 3 つ (または後で変更する任意の数) の質問を吐き出すように追加したいと考えています。

現在、各質問 ($mars、$jupiter、$earth、$sun) の 1 つを選択し、その順序でリストにします。順番を無作為にして、そのうちの 3 つだけを選択するようにします。

「シャッフル ($all)」を使用しようとしましたが、うまくいきませんでした。「for ($i = 1; $i < 4; $i++)」のようなものを使用して、3 つ選択した後に停止させることができたかもしれません。 ? ありがとう。

4

1 に答える 1

1

shuffle($all)うまくいくはずです(私にはうまくいきます)が、なぜあなたに向いていないのかわかりません。3 つを選択するには、次のようにします。

$mars = array ('How big is Mars?', 'How many moons does Mars have?', 'How far away is Mars?', 'What is the highest point on Mars?');
$jupiter = array ('How big is Jupiter?', 'How many moons does Jupiter have?', 'How far away is Jupiter?', 'What is the highest point on Jupiter?');
$earth = array ('How big is Earth?', 'How many moons does Earth have?', 'How far away is Earth?', 'What is the highest point on Earth?');
$sun = array ('How big is the Sun?', 'How many moons does the Sun have?', 'How far away is the Sun?', 'What is the highest point on the Sun?');

$all = array($mars, $jupiter, $earth, $sun);
shuffle($all);

function createList($a)
{
  echo "<ul>"; 
  $count = 1;

  foreach ($a as $array) 
    {
      $questions = count($array);
      $idquestion = rand(0, $questions-1);
      echo "<li>" . $array[$idquestion]  . "</li>";
      if ($count++ >= 3) {
        break;
      }
    }
  echo "</ul>";
}

createList($all);

breakループを早期に終了します。

デモ

于 2013-08-16T20:55:49.237 に答える