php数组初始化 刷新后 赋值消失 为什么?(5行代码 带必要注释 请高手解答)

来源:百度知道 编辑:UC知道 时间:2024/05/25 09:15:42
session_start();
$_SESSION['i'] = isset($_SESSION['i']) ? $_SESSION['i'] + 1 : 0;
echo '$_SESSION '.$_SESSION['i'];
//前三行实现一个刷新一次自动加1的SESSION
echo '<br />';
$lid=array();//定义一个数组
$i=$_SESSION['i'];
$lid[$i]=$_GET['id'];
//上一句是获得从另外一个页面GET来的值,此后本页面因为要不断刷新,
//想把第一次$_GET['id']值存入$lid[0],此后再刷新,因为$_GET['id']
//已为空值,把它保存入$lid[1],$lid[2] 、、、、这样可以保护
//$_GET['id']的值
echo '$i '.$i;
echo '<br />';
echo '$lid0 '.$i.' '.$lid[0];

但是多次刷新后 $lid[0]值居然消失了 ?

这是为什么?
怎么让他不消失呢?

是的,$lid[0]的值会消失,当刷新一次以后数组$lid只有一个元素,就是$lid[1],再次刷新时候这个数组也是只有一个元素$lid[2],因为数组$lid不在会话里面,是每次页面的变量,每次的页面只给它赋予了一个值。

如果你想记录这一系列的id值,应该都存到会话里面,例如:
$_SESSION['i'] = isset($_SESSION['i']) ? $_SESSION['i'] + 1 : 0;
$i=$_SESSION['i'];
$_SESSION["lid$i"]=$_GET['id'];

这样你就可以使用所有的$_SESSION["lid0"]、$_SESSION["lid1"]、……,知道$_SESSION["lid$i"]