数组作为会话变量

时间:2010-02-21 14:28:22

标签: php arrays session

是否可以在PHP中将数组作为会话变量?

情况是我有一个表(第1页),其中一些单元格具有指向特定页面的链接。下一页将有一个名称列表(第2页,我想保留在会话数组中)及其各自的复选框。在提交此表单时,它将指向一个事务页面(第3页,其中已发布的复选框的值保存在数据库中以显示相应的名称)。现在,如果我返回第一页并单击另一个单元格,会话数组是否包含新的名称列表或旧名称列表?

4 个答案:

答案 0 :(得分:72)

是的,您可以将数组放入会话中,例如:

$_SESSION['name_here'] = $your_array;

现在,您可以在所需的任何页面上使用$_SESSION['name_here'],但请确保在使用任何会话函数之前放置session_start()行,因此您的代码应如下所示:

 session_start();
 $_SESSION['name_here'] = $your_array;

可能的示例:

 session_start();
 $_SESSION['name_here'] = $_POST;

现在您可以在任何页面上获取字段值,如下所示:

 echo $_SESSION['name_here']['field_name'];

至于你问题的第二部分,除非你分配不同的数组数据,否则会话变量仍然存在:

 $_SESSION['name_here'] = $your_array;

会话生命周期设置为 php.ini 文件。

<强> More Info Here

答案 1 :(得分:65)

是的,PHP支持数组作为会话变量。有关示例,请参阅this page

至于你的第二个问题:一旦你设置了会话变量,它就会保持不变,直到你改变它或unset它。因此,如果第3页不更改会话变量,它将保持不变,直到第2页再次更改它。

答案 2 :(得分:2)

<asp:TextBox id="txtEmpStartDate" runat="server" Width="165px" ReadOnly="false" CssClass="enable" TabIndex="2" MaxLength="10"></asp:TextBox> 

<a id="A1"  onclick="ShowCal(<%=txtEmpStartDate.ClientID %>,obj,'Add,Edit')" style="cursor:pointer">test</a>


//This function displays the calendar
    function ShowCal(txtid,obj,mode)
    {   
        displayCalendar($(txtid).attr('id'),'dd/mm/yyyy',obj);
    }

答案 3 :(得分:1)

首先使用implode()函数将数组更改为字符串。 E.g $number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number); 然后将字符串传递给会话。例如$_SESSION['string']=$stringofnumber; 因此,当您转到要使用数组的页面时,只需展开您的字符串即可。例如 $number=explode("|", $_SESSION['string']); finally数字是你的数组,但记得在每个页面上启动数组。