基本上,我有一个会话值,该值会定期更新,但是我需要保存该会话的先前值。
这是到目前为止我得到的:
$value = $_GET['value'];
$_SESSION["prev-value"] = $_SESSION["value"];
$_SESSION["value"] = $value;
当然,问题是当我去做<?php echo $_SESSION["prev-value"]; ?>
时,它将被新值覆盖,因为我们正在检查它是否等于新值。
我不想将以前的值存储在数据库或文本文件中,那是唯一的方法还是有什么办法可以克服?
旁注:
我只需要最后一个值,所以我不需要保留大量的东西,只需保留最新的值即可。
答案 0 :(得分:2)
仅当您具有GET
参数进行设置时,才执行此操作。从技术上讲,您应该使用POST
来更新或更改服务器端(包括会话)中的值。
if (isset($_GET['value'])) {
$value = $_GET['value'];
$_SESSION["prev-value"] = $_SESSION["value"];
$_SESSION["value"] = $value;
}
通过上述方法,除非您拥有/?value=something
,否则您的会话值不会受到影响。
更新:在您的注释中,值得尝试将以前的值作为数组。因此,将您的$_SESSION["prev-value"]
略微更改为数组。
if (isset($_GET['value'])) {
$value = $_GET['value'];
if (!isset($_SESSION["prev-value"]))
$_SESSION["prev-value"] = array();
$_SESSION["prev-value"][] = $_SESSION["value"];
$_SESSION["value"] = $value;
}
这样,您将具有可迭代的先前值的历史记录,并且不需要数据库或文本文件。 :)
即使相同的值被设置了太多次,您也可以使用PHP函数array_unique()
来获取数组的唯一值,如果您发疯了,请array_reverse()
来获取数组的第二个值前一个的[1]
值。 ;)
要获得上一个,您可能需要做的是:
$lastValue = array_reverse(array_unique($_SESSION["prev-value"]));
if (count($lastValue) > 1)
$lastValue = $lastValue[1];
echo $lastValue;
答案 1 :(得分:1)
第一次将以前的值设置为空白。并将代码更改为
$_SESSION["prev-value"] = $_SESSION["value"] ?? '';
$_SESSION["value"] = $_GET['value'];
代码流
$_SESSION["prev-value"]---------------$_SESSION["value"]
""---------------10 ----->First time load
10---------------20 ----->Next time load
20---------------30 ----->Next time load
......
......