存储并检查多个$ _SESSION

时间:2014-09-10 12:34:11

标签: php session

我有3个具有相同变量的对象,但使用不同的值进行渲染 001 - Title one
002 - Title two
003 - Title three

如果前三个是相同的,我需要检查另一个页面块。我唯一想到的是将这些变量存储在$_SESSION中。到现在为止还挺好。问题是它只存储最后一个值(显然)。

CODE

/* -- block one --*/
session_start();
$_SESSION['lasttitle'] = $item->getTitle;
echo $item->getTitle(); //rendering 1st object
echo $item->getTitle(); //rendering 2nd object
echo $item->getTitle(); //rendering 3rd object

/* -- block two --*/
session_start(); 
$last3 = $_SESSION['lasttitle'];
if($item->getTitle() != $last3) {
//don't render last 3
}

3 个答案:

答案 0 :(得分:1)

$_SESSION['lastTitles'][] = $item->getTitle();
$_SESSION['lastTitles']   = array_slice($_SESSION['lastTitles'], -3);

..

if (in_array($item->getTitle(), $_SESSION['lastTitles'])) ..

这将存储最后三个标题的数组,并检查标题是否在此数组中。

答案 1 :(得分:0)

我认为在会话中将数据存储为array可能会对您有所帮助。只需在数组中收集所需的所有标题,并将其放入$_SESSION(而不是一个变量)。在下一页中,您将能够分析您拥有的数据并选择所需的变量。

答案 2 :(得分:0)

创建多维会话:

$_SESSION['lasttitle'][$item->id] = $item->getTitle();
$_SESSION['lasttitle'][$item2->id] = $item2->getTitle();
$_SESSION['lasttitle'][$item3->id] = $item3->getTitle();

并检查该元素是否在数组中:

$total = 0;
foreach ($items as $item) {
    if (isset($_SESSION['lasttitle'][$item->id])) {
        $total++;
    }
}

if ($total == 3) {
    // Do something, it's all 3 titles in session!
}

我知道它可能是更好的解决方案,但我不明白完整的算法。另外,要比较某些数组,可以使用array_diff_assoc()