PHP - 获取会话的先前值?
PHP - Get the previous value of a session?
基本上我有一个会定期更新的会话值,但我需要保存会话的先前值。
这是我目前得到的:
$value = $_GET['value'];
$_SESSION["prev-value"] = $_SESSION["value"];
$_SESSION["value"] = $value;
当然,问题是当我执行 <?php echo $_SESSION["prev-value"]; ?>
时,它会被新值覆盖,因为我们正在检查它是否等于新值。
我不想将以前的值存储在数据库或文本文件中,这是唯一的方法还是有什么方法可以克服这个问题?
旁注:
我只需要最后一个值,所以我不需要保留大量,只需要最新值之前的值
仅当您有 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;
第一次将之前的值设置为空白。并将您的代码更改为
$_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
......
......
基本上我有一个会定期更新的会话值,但我需要保存会话的先前值。
这是我目前得到的:
$value = $_GET['value'];
$_SESSION["prev-value"] = $_SESSION["value"];
$_SESSION["value"] = $value;
当然,问题是当我执行 <?php echo $_SESSION["prev-value"]; ?>
时,它会被新值覆盖,因为我们正在检查它是否等于新值。
我不想将以前的值存储在数据库或文本文件中,这是唯一的方法还是有什么方法可以克服这个问题?
旁注:
我只需要最后一个值,所以我不需要保留大量,只需要最新值之前的值
仅当您有 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;
第一次将之前的值设置为空白。并将您的代码更改为
$_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
......
......