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

PHP-刷新时显示不同的字符串,但不是随机的,php,arrays,refresh,Php,Arrays,Refresh,假设我有一个数组: array('A', 'B', 'C', 'D'); 我想在页面重新加载时一次显示一个项目。 例如,第一次访问时,它显示“A”;刷新时,显示“B”;然后是‘C’;然后是‘D’;然后是“A”。重点是在每个页面上按顺序显示这些项目。我想我应该用饼干,但我不知道 我不想用random做这个,因为它会显示类似于'C'然后'A'然后'D'的东西 你能帮我提供一些搜索的提示、提示或关键字吗?我不知道怎么开始 感谢您的帮助 使用array\u rand(http://php.net/ar

假设我有一个数组:

array('A', 'B', 'C', 'D');
我想在页面重新加载时一次显示一个项目。 例如,第一次访问时,它显示“A”;刷新时,显示“B”;然后是‘C’;然后是‘D’;然后是“A”。重点是在每个页面上按顺序显示这些项目。我想我应该用饼干,但我不知道

我不想用random做这个,因为它会显示类似于'C'然后'A'然后'D'的东西

你能帮我提供一些搜索的提示、提示或关键字吗?我不知道怎么开始


感谢您的帮助

使用
array\u rand
(http://php.net/array_rand)和
数组\u 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

阅读

您可以通过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']) ;
?>

您可以使用中的会话

<?
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']];

您必须存储上一个请求显示的内容,并在此基础上返回元素。您可以为此使用文件或数据库。如果您只想处理每个请求,您可以存储一个文件并在0和3之间增加一个计数器,从数组中读取元素并保护计数器

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


<?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']];
?>

所以你不希望它是随机的:你每次都想要B、C、D、A:-?我想你已经确定了所有可能的可能性非常感谢你!看来这次会议是我需要的。情况解决了。
<?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']];
?>