PHP - 在刷新时显示不同的字符串,但不是随机的

时间:2011-08-31 11:23:35

标签: php arrays refresh

假设我有这个数组:

array('A', 'B', 'C', 'D');

我想在页面重新加载时一次显示一个项目。 例如,在第一次访问时,它显示'A';在刷新时,它显示'B';那么'C';然后'D';然后'A'。重点是在每次重新加载页面时按顺序显示这些项目。我想我应该使用cookies,但我没有这方面的知识。

我不想随意做这件事,因为它会显示'C'然后'A'然后'D'......

您可以帮助我搜索一些提示,提示或关键字吗?我不知道如何开始。

感谢任何帮助!

7 个答案:

答案 0 :(得分:3)

您必须存储上一个请求显示的内容并返回基于此的元素。您可以使用文件或数据库。如果你只想对每个请求进行检查,你可以存储一个文件并在0到3之间递增一个计数器,从数组中读取元素并保护计数器。

如果你想为每个用户创建它,你可以设置一个cookie并在那里增加计数器。或者您尝试识别用户(再次,cookie或会话)并在数据库中递增计数器,这可能是一些开销。

答案 1 :(得分:1)

使用array_rand(http://php.net/array_rand)和array_pop。将数组存储在会话中:

if ( !isset( $_SESSION['strings'] ) or !count( $_SESSION['strings'] ) ) {
    // initialize the array (in random order)
    $_SESSION['strings'] = array_rand( array('A', 'B', 'C', 'D') );
}

$item = array_pop( $_SESSION['strings'] ); // take one element off the array

每次返回所有项目时,上面都会重新生成数组 - 如果要保持整个会话的顺序相同,请执行以下操作:

if ( !isset( $_SESSION['strings'] ) ) {
    // initialize the array (in random order)
    $_SESSION['strings'] = $_SESSION['strings_def'] = array_rand( array('A', 'B', 'C', 'D') );
}

if ( !count( $_SESSION['strings'] ) ) {
    $_SESSION['strings'] = $_SESSION['strings_def'];
}

$item = array_pop( $_SESSION['strings'] ); // take one element off the array

答案 2 :(得分:1)

了解sessions

答案 3 :(得分:1)

您可以使用PHP会话执行此操作。

<?php
$default = Array('A', 'B', 'C', 'D') ;
session_start() ;
$_SESSION['myarray'] = isset($_SESSION['myarray']) ? $_SESSION['myarray'] : $default ;
$_SESSION['myarray'] = (count($_SESSION['myarray']) > 0) ? $_SESSION['myarray'] : $default ;
echo array_pop($_SESSION['myarray']) ;
?>

答案 4 :(得分:1)

您可以使用

中的会话
<?
session_start();
$data = array('A', 'B', 'C', 'D');
if (isset($_SESSION['last_index'])) {
  $_SESSION['last_index'] = ($_SESSION['last_index'] + 1) % count($data);
} else {
  $_SESSION['last_index'] = 0;
}
echo $data[$_SESSION['last_index']];

答案 5 :(得分:0)

$strings = array('A','B','C','D');
$cur_index = (empty($_SESSION['page_idx']))?$_SESSION['page_idx']:-1;
++$cur_index;
if ($cur_index>=count($strings))
    $cur_index = 0;
echo $strings[$cur_index];
//And finally, the trick itself
$_SESSION['page_idx'] = $cur_index;

答案 6 :(得分:0)

<?php
session_start();
$arr = array('A','B','C','D');
if (!isset($_SESSION['idx'])) $_SESSION['idx'] = 0;
else $_SESSION['idx'] = (($_SESSION['idx'] > (count($arr)-2)) ? 0 :  ($_SESSION['idx']+1) );
echo $arr[$_SESSION['idx']];
?>