PHP - отображать другую строку при обновлении, но не случайно - PullRequest
0 голосов
/ 31 августа 2011

Допустим, у меня есть этот массив:

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

Я хочу отображать один элемент за раз при перезагрузке страницы. Например, при первом посещении отображается «A»; при обновлении показывает «B»; затем «С»; затем «D»; затем'. Смысл в том, чтобы показывать эти элементы по порядку при каждой перезагрузке страницы. Я думаю, что я должен использовать куки, но у меня нет знаний.

Я не хочу делать это случайным образом, потому что он покажет что-то вроде 'C', затем 'A', затем 'D' ...

Можете ли вы помочь мне с некоторыми советами, подсказками или ключевыми словами для поиска? Я не знаю с чего начать.

Любая помощь приветствуется!

Ответы [ 7 ]

3 голосов
/ 31 августа 2011

Вы должны сохранить то, что показал последний запрос, и вернуть элементную базу по этому.Вы можете использовать файл или базу данных для этого.Если вы просто хотите выполнить каждый запрос, вы можете сохранить файл и увеличить счетчик от 0 до 3, прочитать элемент из массива и сохранить счетчик.

Если вы хотите сделать это для каждогоПользователь, вы можете установить куки и увеличить счетчик там.Или вы пытаетесь идентифицировать пользователя (снова, cookie или сеанс) и увеличиваете счетчик в базе данных, что может быть связано с некоторыми издержками.

1 голос
/ 31 августа 2011

Вы можете использовать сеансы как в

<?
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']];
1 голос
/ 31 августа 2011

Вы можете сделать это с помощью сеанса 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']) ;
?>
1 голос
/ 31 августа 2011

Читать о сеансах

1 голос
/ 31 августа 2011

Используйте 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
0 голосов
/ 31 августа 2011
<?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']];
?>
0 голосов
/ 31 августа 2011
$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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...