【问题标题】:Having Issue Refreshing Random Pages刷新随机页面时出现问题
【发布时间】:2012-06-19 17:30:12
【问题描述】:

我在 PHP 文件中找到了这个 随机页面 脚本。当我在浏览器上单击刷新重新加载)时,很难刷新页面,这让我有点沮丧强>。每个随机页面都有一篇文章,有些有两张图片,但大多是一张图片。只有 3 篇文章。

问题是需要 23 次点击 才能刷新 页面。有No按钮,只有在上点击'reload'页面时才会刷新页面浏览器所有浏览器)或访问该网站。为了让它工作,它总是需要至少 23 次点击 来刷新。

代码如下:

<?php
$pagesArray = array("article1.php", "article2.php", "article3.php");
$randNum = rand(0, count($pagesArray)-1);
echo $pagesArray[$randNum];
?> 

我也尝试修改脚本以使用 "shuffle"

<?php
$pagesArray = array("article1.php", "article2.php", "article3.php");
shuffle($pagesArray);
echo $pagesArray[0];
?> 

也用到了"array_rand"

<?php
$pagesArray = array("article1.php", "article2.php", "article3.php");
array_rand($pagesArray);
echo $pagesArray[0];
?> 

有没有办法让代码变得更好?我只想让代码刷新不同的页面,而不是点击2或3次让它工作。我很感激任何关于如何使它正常工作的建议,或者任何例子都会让我看到全貌!

谢谢

【问题讨论】:

  • 您已经展示了实现某事的三种方法,但没有真正的问题或需要。什么不工作?考虑到它们都应该工作,上述任何一个有什么问题?
  • 您好 g.d 感谢您的回复!问题主要是很难刷新,需要单击 2 或 3 次才能工作。当我在第一个示例 ($randNum) 上单击刷新时,对于第二个示例 (shuffle),它也会这样做。但是对于最后一个例子(array_rand),它不起作用也许我写错了
  • 单击一次并等待会发生什么?它是超时还是最终返回结果?性能问题(您所描述的)不太可能是由这些实现之一引起的。
  • 难道randshuffle 只是连续两次返回相同的结果?您要测试的数组中是否只有 3 个项目?
  • array_rand 不会随机化传递的数组,但它会返回一个包含随机键的数组。

标签: php html


【解决方案1】:

我不熟悉 PHP,但如果你问在数组中选择随机元素的哪种方法最快,我猜这是选项 1。生成随机整数需要恒定时间,并返回一个元素数组索引的数组也应该花费恒定的时间。我不知道 shuffle 是如何实现的,但我很确定获得一个随机数会比 shuffle 一个元素数组花费更少的时间。无论如何,如果您的数组中只有几个元素,那么用户应该不会有明显的差异。

至于为什么它需要 2 或 3 次刷新才能“工作”,我猜这可能是因为您只是多次返回同一个页面。如果您可以获取用户当前在(或已访问)的页面,则可以在选择之前从数组中删除该项目。

【讨论】:

  • 您好,志浩,感谢您的回复和解释!当我单击它时,我的数组有 3 篇文章,它不会做任何事情。我必须单击它两次或第三次才能出现随机文章。如果您提到“如果您可以获取用户当前正在(或已访问)的页面,您可以在选择一个之前从数组中删除该项目”,我不明白您的意思,我深表歉意。你的意思是我必须从数组中取出 1 篇文章?
  • 让我看看我是否理解正确。您是否有一个带有按钮的页面,如果您选择该按钮,它会显示一个随机的新页面(取自数组)?当它显示一篇新文章时,按钮是否仍然存在供用户单击?此外,它是否总是至少需要两次或三次点击才能工作?它在第一次尝试时是否有效?
  • 您好,志豪,没有按钮,只有在浏览器点击重新加载页面或访问网站时才会刷新页面。是的,它总是需要至少 2 或 3 次点击才能工作
  • 如果您在第一次刷新时从未获得不同的页面,那么选择要返回的页面可能不是问题(我仍然会为此推荐选项 1),而是 您如何返回页面。我会仔细检查您问题中的语句是否真的被调用,然后检查您是否正确返回它。除此之外,我不确定我能帮到你多少,因为我对 PHP 不是很熟悉,抱歉。
  • 如果您有任何关于该问题的更多信息,我还建议您更新您的问题,以便其他人可以看到它并为您提供更多帮助。
猜你喜欢
  • 2018-06-06
  • 1970-01-01
  • 2012-03-26
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
相关资源
最近更新 更多