问题:
session_start();
$_SESSION[]=$_GET['id'];
print_r($_SESSION);
地址栏我传 ?id=10 这样就是 $_SESSION[0]=10
但是我再重新刷新页面 传id=20 这是$_SESSION[0]=20了
为什么SESSION不会保留原有的$_SESSION[0]=10 而是覆盖了??
session_start();
$_SESSION['2'] = 'lisalian';
print_r($_SESSION);
结果:Array ( [2] => lisalian )
但是:
session_start();
//$_SESSION['2'] = 'lisalian';
print_r($_SESSION);
结果居然是 Array ( )
太不符合常理了!!!
一开始问群里人 有人说session_start()会初始化session
所以session会覆盖。。这样乍一听好像挺对的 但是仔细一想 没有session_destroy() session数组的值怎么会没有
没有的话 这样不跟普通数组没区别吗??
直到有人说 把上面的int 键值 变成 string 字符串类型 就不会被覆盖了!
所以
session_start();
session_destroy();
$index = (string)((count($_SESSION)+1).'s');
$_SESSION[$index] = $_GET['id'];
echo '<pre>';
var_dump($_SESSION);
echo '</pre>';
因为这样SESSION的键值变成了 SESSION['1S'] SESSION[2S] 这样就没有被覆盖
总结:int类型和string类型的结果还不一样?int的每次传值会覆盖,而string不会,会创建新的数组元素