随机内容数组似乎卡住了

时间:2014-05-26 15:34:12

标签: php arrays random

我有一个完美的随机内容脚本,但现在似乎有一个小故障。

这是http://fiction.deslea.com/index2.php左上角的“Spotlight On:”故事,代码如下:

$storyspotlights = array("bluevial", "biophilia", "real", "edgeofreality", 
"limitsofperception", "markofcain", "spokenfor", "closer", 
"feildelm", "purgatory", "elemental");

$randomstoryID = array_rand($storyspotlights);

$randomstory = $storyspotlights[$randomstoryID];

switch ($randomstory) {

    case ($randomstory == 'closer'):

        $storyspotlightheader = "<div class='storyspotlightheader'>Closer</div>";
        $storyspotlighttext = "snip";

//some stories snipped

    case ($randomstory == 'bluevial'):

        $storyspotlightheader = "<div class='storyspotlightheader'>The Blue
                                Vial</div>";
        $storyspotlighttext = "snip";

    break;

//more stories snipped

    }

print($storyspotlightheader);
print($storyspotlighttext);

我的问题是 - 当你以随机顺序刷新页面时,所有从Blue Vial到Spoken For的故事都会出现(虽然Blue Vial似乎有点相似)。这些是剧本中的故事。

从那时起,我将最后四个添加到数组和内容生成开关案例片段,但这些最后四个故事永远不会出现在随机数发生器中。我真的坐了几个小时,精神焕发。我一遍又一遍地确认更新的脚本在服务器上,甚至删除并重新上传。

我在故障排除的各个阶段尝试在脚本开头尝试取消设置和$ storyspotlights = array(),但无济于事。我也尝试将新故事移到阵列的开头 - 也没有改变。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

令人惊讶的是,这一切都很有效。这不是您使用switch..case的方式。

switch (<value to compare>) {

    case <value to compare against>:
        ...

}

这意味着你写下这个:

switch ($randomstory) {

    case 'closer':
        ...

}

根据您所写的内容,它实际执行如下:

if ($randomstory == ($randomstory == 'closer')) ...

另外请确保您实际上没有忘记一些break语句,这会使代码落到下一个案例中,并且确实会使某些案例变得更加棘手&#34;比其他人。

另外,我简化了整个过程:

$stories = array(
    array('header' => '...', 'text' => '...'),
    array('header' => '...', 'text' => '...'),
    ...
);

$story = $stories[array_rand($stories)];

echo $story['header'];
echo $story['text'];