我试图在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
页面。
答案 0 :(得分:5)
我会保持简单。
// List numbers 1 to 20
$pages = range(1,20);
// Shuffle numbers
shuffle($pages);
// Get a page
$page = array_shift($pages);
答案 1 :(得分:0)
为了浏览每个页面上的所有20个数字而不重复,您需要设置会话变量。
projs