$ _SESSION起始值,避免使用负值

时间:2019-04-08 18:41:33

标签: php session-variables

该脚本的目的是:

  1. 具有一个从3开始的计数器,并在每次重新加载Web浏览器时减小该计数器。
  2. 为避免计数器得到负值,$_SESSION的最低可接受值应为[0]

问题:

  1. 运行脚本时,计数器从2开始,为什么?
  2. if语句中的第一个代码块具有连续检查$_SESSION是否等于0或低于0的作用。它仅在达到[-1]时停止,为什么不停止在值0上。
<?php
session_name();
session_start();

$count = $_SESSION["count"] ?? 3;

if($_SESSION["count"] >= 0) {
  $_SESSION["count"] = --$count;
} else {
  echo("<br><br>");
  echo("Value is lower then 0.");
}    
print_r($_SESSION);

1 个答案:

答案 0 :(得分:0)

要回答您的问题:

  1. 它从2开始,因为在您的第一次迭代中未设置$_SESSION['count']。当它达到$_SESSION["count"] = --$count;时,$_SESSION['count']被设置为2。您必须确保设置了$_SESSION['count']
  2. 您必须将if条件更改为等于if($_SESSION["count"] > 0),以便它将停止在0而非-1处。
<?php
session_name();
session_start();
//unset($_SESSION["count"]);return;
if(!isset($_SESSION["count"])){
  $_SESSION["count"] = 3;
}
$count =$_SESSION["count"];

print_r("Count(1): {$_SESSION["count"]}");

if($_SESSION["count"] > 0) {
  $_SESSION["count"] = --$count;
} else {
  echo("<br><br>");
  echo("Value is lower then 0.");
}    

print_r("Count(2): {$_SESSION["count"]}");