1

我有一个存储在数组中的会话,我想知道如果该人访问同一页面,它不会将其添加到数组中,并且如果数组值为空,则不回显结果,我将如何处理,这是一个例子

$SESSION['image'][0] => page1

他们访问了 page1,因此它被记录下来。现在,如果他们回到页面,数组看起来像这样

$SESSION['image'][0] => page1
$SESSION['image'][1] => page1

我还回显了最近访问的 3 个页面的标题和缩略图,但是如果他们清除了历史记录或第一次访问该站点,则图像会损坏,因为数组中没有数据。这是我尝试过的

if(!empty($_SESSION['image'][1]) {
echo ' <div>$_SESSION[/'image/'][1]</div>
}

我用它来保持数组更新前 4 个

if (!isset($_SESSION['image']))
{
$_SESSION['image'] = array();
}
array_unshift($_SESSION['image'], $rentals['Image']);
if (count($_SESSION['image']) > 4)
{
array_pop($rentals['Image']);
}

但是,是否有更好的方法将数组保持在 4 个值并在 4 个值之后转储值?

哇,这是一个很长的问题,我很抱歉:-/

4

2 回答 2

1

我认为array_slice函数是保持数组大小在界限内所需的。看一下这个:

<?php 
$a = array(1);
print_r(array_slice($a, -4));

$a = array(1, 2, 3, 4, 5);
print_r(array_slice($a, -4));
于 2012-09-19T18:54:45.317 回答
0

使用 in_array 检查图像数组以确保尚未设置该值。如果数组为 4 或更大,则不要设置任何内容。

if (!in_array($SESSION['image'], $page) && count($SESSION['image']) <= 4) {
    $SESSION['image'][] = $page;
}
于 2012-09-19T19:03:30.790 回答