现有一个数组 1 2 3 4 5 ,用php和mysql实现每次访问页面显示不同的数组的值,重复显示5次后不再显示
时间: 2024-02-11 18:05:45 浏览: 23
可以使用SESSION来记录已经显示过的次数,然后每次访问页面时,从数据库中随机取出一个数组,如果这个数组已经被显示过5次,则再次取出一个新的数组。具体实现如下:
```php
<?php
session_start();
if (!isset($_SESSION['displayed'])) {
$_SESSION['displayed'] = array();
}
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM arrays ORDER BY RAND() LIMIT 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
if (in_array($row['id'], $_SESSION['displayed'])) {
$query = "SELECT * FROM arrays WHERE id NOT IN (" . implode(",", $_SESSION['displayed']) . ") ORDER BY RAND() LIMIT 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
}
echo implode(" ", explode(",", $row['array']));
array_push($_SESSION['displayed'], $row['id']);
if (count($_SESSION['displayed']) == 5) {
$_SESSION['displayed'] = array();
}
$mysqli->close();
?>
```
其中,假设数组的表结构如下:
```sql
CREATE TABLE `arrays` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`array` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
然后向表中插入一些数组的数据:
```sql
INSERT INTO `arrays` (`id`, `array`)
VALUES
(1,'1,2,3,4,5'),
(2,'6,7,8,9,10'),
(3,'11,12,13,14,15'),
(4,'16,17,18,19,20'),
(5,'21,22,23,24,25');
```
这样,每次访问页面时,就会随机显示一个数组,重复显示5次后会再次随机选择一个新的数组。