【发布时间】:2013-08-14 20:48:13
【问题描述】:
如何将数组的随机部分存储在数组中,然后打印为列表?
我知道我的问题的两个部分都有答案,但我找到的两个答案彼此不兼容。我正在尝试用 PHP 来做这件事,但如果绝对必要,我愿意使用另一种代码语言。
到目前为止,我已经尝试做一个简单的版本。我想将每个数组($mars、$jupiter 和 $earth)中的一个随机问题存储为另一个数组($all),然后将此数组重新格式化为要显示为 html 的列表(使用
- 和
- )。
出于某种原因,第一个函数需要 =>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);
【问题讨论】:
-
有什么问题?您期望的输出是什么?你得到的输出是什么?
-
地球有多远?
-
我期待从每个原始数组中的一个随机问题生成一个列表。 webfix 解决了我的问题。