每次打开页面时都会随机播放数组值,没有会话?

时间:2013-07-12 08:32:04

标签: php arrays session

我有一个包含一些问题的数据库,我希望每次页面打开不刷新以不同的顺序显示它们。

洗牌,没关系:

 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> ";
}

刚才,当我每次刷新不同时刷新我只想在我第一次打开页面时这样做。

3 个答案:

答案 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();
}

希望这有帮助...