我有一个完美的随机内容脚本,但现在似乎有一个小故障。
这是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(),但无济于事。我也尝试将新故事移到阵列的开头 - 也没有改变。
我错过了什么?
答案 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'];