【发布时间】:2011-01-19 08:30:19
【问题描述】:
是否可以在 PHP 中使数组成为会话变量?
情况是我有一个表格(第 1 页),其中一些单元格具有指向特定页面的链接。下一页将有一个名称列表(第 2 页,我想将其保留在会话数组中)及其各自的复选框。提交此表单后,将进入交易页面(第 3 页,已发布复选框的值保存在数据库中以对应名称)。现在,如果我返回第一页并单击另一个单元格,会话数组将包含新名称列表还是旧名称列表?
【问题讨论】:
是否可以在 PHP 中使数组成为会话变量?
情况是我有一个表格(第 1 页),其中一些单元格具有指向特定页面的链接。下一页将有一个名称列表(第 2 页,我想将其保留在会话数组中)及其各自的复选框。提交此表单后,将进入交易页面(第 3 页,已发布复选框的值保存在数据库中以对应名称)。现在,如果我返回第一页并单击另一个单元格,会话数组将包含新名称列表还是旧名称列表?
【问题讨论】:
是的,您可以将数组放入会话中,例如:
$_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 文件中。
【讨论】:
<?php // PHP part
session_start(); // Start the session
$_SESSION['student']=array(); // Makes the session an array
$student_name=$_POST['student_name']; //student_name form field name
$student_city=$_POST['city_id']; //city_id form field name
array_push($_SESSION['student'],$student_name,$student_city);
//print_r($_SESSION['student']);
?>
<table class="table"> <!-- HTML Part (optional) -->
<tr>
<th>Name</th>
<th>City</th>
</tr>
<tr>
<?php for($i = 0 ; $i < count($_SESSION['student']) ; $i++) {
echo '<td>'.$_SESSION['student'][$i].'</td>';
} ?>
</tr>
</table>
【讨论】:
首先使用 implode() 函数将数组更改为字符串。例如$number=array(1,2,3,4,5,...);
$stringofnumber=implode("|",$number);
然后将字符串传递给会话。例如$_SESSION['string']=$stringofnumber;
因此,当您转到要使用数组的页面时,只需爆炸您的字符串。例如
$number=explode("|", $_SESSION['string']);finally number 是你的数组,但记得在每一页开始数组。
【讨论】: