【问题标题】:How do you store random parts of an array within an array and then print as a list?如何将数组的随机部分存储在数组中,然后打印为列表?
【发布时间】:2013-08-14 20:48:13
【问题描述】:

后续问题:How to randomly take some examples from arrays, shuffle them and place them into a new array to be formatted as a list

如何将数组的随机部分存储在数组中,然后打印为列表?

我知道我的问题的两个部分都有答案,但我找到的两个答案彼此不兼容。我正在尝试用 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 解决了我的问题。

标签: php arrays


【解决方案1】:

我不知道我是否得到了你需要的东西,但我发现你的代码真的很混乱,所以我根据你的描述创建了自己的函数,这里有修复的数组和所有东西

$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?');

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

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);

【讨论】:

  • 现在我明白了,您的函数正在返回字符串,因此您只需将“echo”更改为“$output .=" 并在末尾写入“return $output”...然后告诉如果对你有帮助,谢谢
  • 这就是我想要的。谢谢
  • 你对 $output 和 echo 有什么看法?它目前按预期工作,那会做什么呢?我会改变哪个回声?
  • 您将替换所有的回声......不同之处在于,现在,函数直接写入 html,输出将创建字符串,您可以在几行代码后再次使用而无需更改.. .
猜你喜欢
  • 2015-03-26
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 2017-09-26
相关资源
最近更新 更多