SESSION键值传int类型 和 string 类型 的结果大相径庭!

问题:


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不会,会创建新的数组元素


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值