【发布时间】:2015-08-25 20:47:15
【问题描述】:
我正在尝试在php 中获取自定义函数以返回1 和20 之间不重复的随机数,即多次生成相同的数字,因为我需要随后使用这个数字导航到二十个网页之一,我不希望显示相同的网页。
这是我的代码分三步:
<form action="rand.php">
<p>Click this button to display a random number that does not repeat...</p>
<p><input type="submit" value="Generate"></p>
</form>
这里是rand.php:
require_once('functions.php');
$page = generateNumber();
echo $page;
这里是functions.php:
<?php
$check = array();
function generateNumber() {
global $check;
$page_no = mt_rand(1,20);
$check[] = $page_no;
if (count($check) != 1) {
foreach ($check as $val) {
if ($val == $page_no) {
$page_no = mt_rand(1,10);
continue;
}
}
return $page_no;
}
else {
return $page_no;
}
}
?>
我的代码似乎可以正常工作,但是,它是重复数字,所以我显然做错了什么。我最初检查count 的原因是无论如何都会返回第一个数字,因为它将是一个新数字。
为了查看数字变化,我一直在浏览器中刷新rand.php 页面。
【问题讨论】:
-
$check[]未填充当前页码 -
洗牌范围(0,20),循环遍历它
-
您可能需要将数组存储在会话中。另外,当你用完所有 20 个数字时会发生什么?
-
我希望通过在特定会话变量上使用
count函数在它的数字用完之前捕获它,该函数监视人们为每个网页回答了多少问题,因为这是为了已经启动并运行的在线调查。每次有人提交时,我都会使用header函数重定向到下一个网页。而不是 page01 转到 page02 和 page03 等。我希望它随机选择一个数字,我可以在header函数中与 url 字符串连接。例如。 `'www.website.com/page0' 。 $num 。 '.co.uk'