Сохраните случайный массив в сеансе, чтобы перебрать при перезагрузке страницы

У меня есть функция PHP, которая хранит случайный массив в сеансе. Он перебирает массив каждый раз при перезагрузке страницы. Когда достигается конец массива, он генерирует новый случайный массив для циклического прохождения.

Вместо того, чтобы генерировать новый случайный массив, возможно ли использовать тот же самый случайный массив, который был создан при первом посещении?

// Init array
$files = array();

// Init session
session_start();

// Check if this is the first time visit or if there are files left to randomly select
if( !isset($_SESSION['FILES']) OR count($_SESSION['FILES']) == 0 ) {
// Reload with all files
$files = array(1, 2, 3, 4, 5);
}
else {
// Use the files that are left
$files = $_SESSION['FILES'];
}

// Get random file
$selectedFile = array_rand($files);

// Include random file
print_r($files[$selectedFile]);

// Remove random file from array
unset($files[$selectedFile]);

// Set the session with the remaining files
$_SESSION['FILES'] = $files;

0

Решение

Используйте другой сеанс, вероятно, называется $_SESSION['FILES_BACKUP'];

Когда ваш массив станет пустым, скопируйте сеанс резервного копирования в основной.

// Init array
$files = array();// Init session
session_start();

// Check if this is the first time visit or if there are files left to randomly select
if( !isset($_SESSION['FILES']) OR count($_SESSION['FILES']) == 0 ) {
if(!isset($_SESSION['FILES_BACKUP'])) {
// Reload with all files
echo 'no backup';
$files = array(1, 2, 3, 4, 5);
} else {
echo 'backup';
$_SESSION['FILES'] = $_SESSION['FILES_BACKUP'];
$files = $_SESSION['FILES_BACKUP'];
}
} else {
// Use the files that are left
$files = $_SESSION['FILES'];
}

// Get random file
$selectedFile = array_rand($files);

// Include random file
print_r($files[$selectedFile]);

// Remove random file from array
unset($files[$selectedFile]);

// Set the session with the remaining files
$_SESSION['FILES'] = $files;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]