我整个上午一直在尝试这个问题。当我加载直接设置数组的函数,并删除重定向,它工作正常。数组的两个级别中的所有数据都在那里。当我在重定向中添加回来时,该功能重定向,并删除该数组的第二级。离开第一个。因此会话正在设置,但由于某种原因它会从会话中删除数据。
控制数组和重定向的函数
public function test(){
$i=$_GET['i'];
$this->construct_data();
redirect('view/name?i='$i);
}
public function construct_data(){
$i=$_GET['i'];
list($array1)=$this->array1($i);
list($array2)=$this->array2($i);
list($array3)=$this->array3($i);
list($array4)=$this->array4($i);
list($array5)=$this->array5($i);
list($array6)=$this->array6($i);
$container= array(
'array1'=>$array1,
'array2'=>$array2,
'array3'=>$array2,
'array4'=>$array4,
'array5'=>$array5
);
$this->session->set_userdata('construct',$container);
}
视图
$data = $this->session->userdata('construct');
var_dump($data);
视图中的var_dump返回所有第一级容器,数组1到5.但它不包含被调用函数内的任何数据。它返回$ data [' array1']。
现在,如果我将var_dump放在测试函数中而不是重定向中,那么数据将按原样返回,$ data [' array1'] [' array1item']
如果不清楚,请告诉我。此外,变量和函数的名称也已更改,以保持匿名性。
答案 0 :(得分:0)
不是直接向会话添加数组,而是首先使用json_encode()函数将其转换为json。在检索时,您使用json_decode()函数对其进行解码。
添加 会话
$this->session->set_userdata('construct',json_encode($container));
阅读 来自 会话
$data = $this->session->userdata('construct');
var_dump(json_decode($data,true));

答案 1 :(得分:0)
好的,实际问题是尺寸。我太大了,因此无法将它传递到课堂之外。