记一次PHP代码中的BUG,求大神解疑

   环境:centos + nginx + php5.3n + mysql5.6.17

   框架:CI


   出错的代码如下:

<?php
session_start();

$_SESSION['os'] = 'ios';
$_SESSION['ver'] = '4.0';
$_SESSION['channel'] = '360';
$_SESSION['user_id'] = '20772004';

$mongo_data = array(
	'table' => 'channel_source_log',
	'user_id' => $_SESSION['user_id'],
	'channel' => $_SESSION['channel'],
	'ver' => $_SESSION['ver'],
	'os' => $_SESSION['os'],
	'create_time' => time(),
	'operation' => 1,
);
//保存到mongodb
set_mongo_data($mongo_data);

var_dump($_SESSION);

       最后的结果出乎意料,打印出来的$_SESSION为整型,值为上面数组中的create_time的值。也就是说整个$_SESSION不再是一个数组,而变成了类似1427846399这样的结果。

       我的处理方法是把$_SESSION中的项全部赋值给一个变量,然后在$mongo_data中赋值时直接使用变量,结果是正确的,如下:

<?php
session_start();

$_SESSION['os'] = 'ios';
$_SESSION['ver'] = '4.0';
$_SESSION['channel'] = '360';
$_SESSION['user_id'] = '20772004';

//此处先赋值给变量再使用
$user_id = $_SESSION['user_id'];
$ver = $_SESSION['ver'];
$os = $_SESSION['os'];
$channel = $_SESSION['channel'];

$mongo_data = array(
	'table' => 'channel_source_log',
	'user_id' => $user_id,
	'channel' => $channel,
	'ver' => $ver,
	'os' => $os,
	'create_time' => time(),
	'operation' => 1,
);
//保存到mongodb
set_mongo_data($mongo_data);

var_dump($_SESSION);

       把第一段单摘出来是没有问题的,只有在项目中会出错。大家知道这可能是什么原因造成的吗?


你可能感兴趣的:(记一次PHP代码中的BUG,求大神解疑)