我有一个包含一些问题的数据库,我希望每次页面打开,不刷新以不同的顺序显示它们。
洗牌,没关系:
function shuffle_keys( &$array ) {
$keys = array_keys($array);
shuffle($keys);
foreach($keys as $key) {
$new[$key] = $array[$key];
}
$array = $new;
}
使用数据库中的值对数组进行随机打印并打印它:
shuffle_keys($array_questions);
foreach( $array_questions as $key => $val ) {
$key_value = ++$key;
echo "<a href = '?id=$val'>".$key_value."</a> ";
}
刚才,当我每次刷新不同时刷新我只想在我第一次打开页面时这样做。
答案 0 :(得分:1)
如果你想为同一个会话进行相同的改组,(这就是我所理解的)
您可以使用$_SESSION
变量来存储数组。
session_start();
if (isset($_SESSION['array_questions']))
$array_questions=$_SESSION['array_questions'];
else
{
shuffle_keys($array_questions);
foreach( $array_questions as $key => $val ) {
$key_value = ++$key;
echo "<a href = '?id=$val'>".$key_value."</a> ";
}
$_SESSION['array_questions']=$array_questions;
}
答案 1 :(得分:1)
您无法自行检测页面刷新。也许考虑设置一个cookie并断言它是否在页面打开时存在?
答案 2 :(得分:0)
您可以使用静态变量。只需创建一个类,如下所示:
class Base {
protected static $variable = 0;
}
class child extends Base {
function set() {
self::$variable = 1; // let say 1 = 'sorted'
}
function show() {
echo(self::$variable);
}
}
现在,当您进入您的网站时,
创建一个对象并设置变量,调用方法
$c1 = new Child();
if($c1->show() == 0)
{
// sort your array here and set the static flag to sorted(1)
$c1->set();
}
希望这有帮助...