后续问题:如何从数组中随机抽取一些样本,打乱它们并放入一个新的数组中以格式化为一个列表
如何将数组的随机部分存储在数组中,然后打印为列表?
我知道我的问题的两个部分已经有了答案,但是我找到的两个答案彼此不兼容。我正在尝试使用 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);