从PHP数组输出随机条目

时间:2014-03-11 23:21:12

标签: php arrays

我正在尝试输出存储在数组中的随机选择项。有三个不同的数组,我想从每个数组中输出四个项目。所以页面上会出现12个单词。

以下是实时网站的示例。在你看到白色方块的地方,它们应该是单词,但是我无法使它工作:http://francesca-designed.me/create-a-status/

我有三个数组,每个数组有20个单词:

<?php
$poolOne=array("sparkly","sporty","happy","confident","awesome","funny","awkward","mad","silly","dynamic",
"handsome","merry","horrid","funky","loud","chirpy","posh","clever","pretty","athletic");
shuffle($poolOne);

$poolTwo=array("pink","purple","melon","lemon","lime","red","blue","peach","rouge","green",
"ginger","blonde","brown","yellow","gold","violet","rainbow","maroon","indigo","silver");
shuffle($poolTwo);

$poolThree=array("zebra","lion","tiger","fish","ktten","butterfly","octopus","squid","puppy","bug",
"spider","cat","hamster","newt","frog","monkey","dog","rabbit","pig","sheep");
shuffle($poolThree);
?>

我尝试使用shuffle()来重新排列这些数字,然后随机将它们调用到我的span中:

<div class="words one">
    <span><?php for($i=0;$i<4;$i++) {echo $poolOne[$i];} ?></span>
    <span><?php for($i=0;$i<4;$i++) {echo $poolOne[$i];} ?></span>
    <span><?php for($i=0;$i<4;$i++) {echo $poolOne[$i];} ?></span>
    <span><?php for($i=0;$i<4;$i++) {echo $poolOne[$i];} ?></span>
</div>

我猜这不对,或者说我做错了。

最终我需要遍历每个数组并将随机数4输出到跨度中。

2 个答案:

答案 0 :(得分:2)

您可以使用array_rand()代替shuffle()

foreach (array_rand($poolOne, 4) as $key) {
    echo $poolOne[$key];
}

foreach (array_rand($poolTwo, 4) as $key) {
    echo $poolTwo[$key];
}

foreach (array_rand($poolThree, 4) as $key) {
    echo $poolThree[$key];
}

该函数返回您传递的数组的随机(唯一)键数组。如果你只需要数组中的四个随机元素,那么这将优先于修改整个数组的shuffle()

Demo

  

我的数组在代码中是否低于此值?

是的,确实如此。数组必须在此代码之上声明,否则在代码运行时它们将被定义。

答案 1 :(得分:0)

Francesca - 我使用Jack的建议来使用array_rand。 请删除您的shuffle电话,而不是使用此电话:

<div class="words one">
    <span><?php foreach( array_rand( $poolOne, 4 ) as $key ) { echo $poolOne[ $key ] ; } ?></span>
    <span><?php foreach( array_rand( $poolTwo, 4 ) as $key ) { echo $poolTwo[ $key ] ; } ?></span>
    <span><?php foreach( array_rand( $poolThree, 4 ) as $key ) { echo $poolThree[ $key ] ; } ?></span>
</div>

如果你标记杰克的答案我完全没问题。正在他指出要使用array_rand()。