php会话和数组

时间:2012-09-19 18:30:20

标签: php arrays session

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

$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?之后转储值?

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

2 个答案:

答案 0 :(得分: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));

答案 1 :(得分:0)

使用in_array检查图像数组以确保尚未设置该值。如果阵列在4或更大时不要设置任何东西..

if (!in_array($SESSION['image'], $page) && count($SESSION['image']) <= 4) {
    $SESSION['image'][] = $page;
}