Последующий вопрос: как случайным образом взять некоторые примеры из массивов, перетасовать их и поместить в новый массив, который будет отформатирован как список
Как вы храните случайные части массива в массиве и затем печатаете в виде списка?
Я знаю, что есть ответы на обе части моего вопроса, но два ответа, которые я нашел, несовместимы друг с другом. Я пытаюсь сделать это с помощью PHP, но я готов использовать другой язык кода, если это абсолютно необходимо.
Я составил простую версию того, что я пытался сделать до сих пор. Я хотел бы сохранить один случайный вопрос из каждого массива ($ mars, $ jupiter и $ earth) в качестве другого массива ($ all), а затем переформатировать этот массив как список, который будет отображаться как html (используя <ul> и <li> ).
По какой-то причине первая функция хочет => array (), а вторая – нет.
Это делает форматированный список html-стиля из массива (замените $ all на массив, который вы хотите отформатировать)
function makeList($all) { //Base case: an empty array produces no list if (empty($all)) return ''; //Recursive Step: make a list with child lists $output = '<ul>'; foreach ($all as $key => $subArray) { $output .= '<li>' . $key . makeList($subArray) . '</li>'; } $output .= '</ul>'; return $output; }
Здесь я просто делаю массивы. Для форматирования, описанного выше, необходим массив => array (). Я не знаю почему.
$mars = array ('How big is Mars?'=>array(), 'How many moons does Mars have?'=>array(), 'How far away is Mars?'=>array(), 'What is the highest point on Mars?'=>array()); $jupiter = array ('How big is Jupiter?'=>array(), 'How many moons does Jupiter have?'=>array(), 'How far away is Jupiter?'=>array(), 'What is the highest point on Jupiter?'=>array()); $earth = array ('How big is Earth?'=>array(), 'How many moons does Earth have?'=>array(), 'How far away is Earth?'=>array(), 'What is the highest point on Earth?'=>array()); //An array of the three arrays $all = array ($mars, $jupiter, $earth);
Это печатает отформатированную версию $ all
echo makeList ($all);
Это случайное взятие двух вопросов из массива $ marz и их печать
$marz = array ('How big is Mars?', 'How many moons does Mars have?', 'How far away is Mars?', 'What is the highest point on Mars?'); $rand_keys = array_rand($marz, 2); echo $marz[$rand_keys[0]] . "\n"; echo $marz[$rand_keys[1]] . "\n";
Здесь я сохраняю эти результаты в новом массиве и печатаю его как доказательство в уродливой форме массива
$new = array ($marz[$rand_keys[0]], $marz[$rand_keys[1]]); print_r ($new);