数组作为会话变量


69

是否可以在PHP中使数组成为会话变量?

情况是我有一个表(第1页),其中有些单元格具有指向特定页面的链接。下一页将列出名称(第2页,我想保留在会话数组中)及其相应的复选框。提交此表格后,它将进入一个交易页面(第3页,其中已发布复选框的值保存在数据库中以用于对应名称)。现在,如果我返回首页并单击另一个单元格,则会话数组将包含新名称列表还是旧名称列表?

Answers:


77

是的,PHP支持将数组作为会话变量。有关示例,请参见此页面

关于第二个问题:设置会话变量后,它将保持不变,直到您对其进行更改或更改为止unset。因此,如果第三页没有更改会话变量,它将保持不变,直到第二页再次更改它为止。


2
如果返回第一页并单击进入第二页(将数据放入会话中),则会话数据将包含一组新数据。
Glass机器人

示例页面的清单13是非常糟糕的示例。它使读者感到困惑。
Terry Lin

79

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

$_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文件中。

更多信息在这里


大。谢谢。
腹板

4
session_start();          //php part
$_SESSION['student']=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
    <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>

1

首先使用implode()函数将数组更改为字符串。例如,$number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number); 然后将字符串传递给会话。例如$_SESSION['string']=$stringofnumber; ,当您转到要使用数组的页面时,只需爆炸字符串即可。例如, $number=explode("|", $_SESSION['string']);最后一个数字是您的数组,但请记住在每个页面的开始数组。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.