有没有办法将多维数组传递给会话?

时间:2015-02-09 10:29:27

标签: php codeigniter session multidimensional-array

我整个上午一直在尝试这个问题。当我加载直接设置数组的函数,并删除重定向,它工作正常。数组的两个级别中的所有数据都在那里。当我在重定向中添加回来时,该功能重定向,并删除该数组的第二级。离开第一个。因此会话正在设置,但由于某种原因它会从会话中删除数据。

控制数组和重定向的函数

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']

如果不清楚,请告诉我。此外,变量和函数的名称也已更改,以保持匿名性。

2 个答案:

答案 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)

好的,实际问题是尺寸。我太大了,因此无法将它传递到课堂之外。