数组作为会话变量

有没有可能在 PHP 中将一个数组变成一个会话变量?

这种情况是,我有一个表(第1页) ,其中一些单元格有一个到特定页面的链接。下一页将有一个名称列表(第2页,我想保存在一个会话数组中)和它们各自的复选框。在提交此表单时,它将导致一个交易页面(第3页,其中已发布的复选框的值保存在相应名称的数据库中)。现在,如果我返回到第一页并单击另一个单元格,会话数组将包含新的名称列表还是旧的名称列表?

310897 次浏览

是的,您可以在会话中放置数组,例如:

$_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 支持数组作为会话变量。

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

首先使用 内爆函数将数组更改为字符串

$number = array(1,2,3,4,5);


# Implode into a string using | as the separator.
$stringofnumber = implode('|', $number);


# Pass the string to a session. e.g
$_SESSION['string'] = $stringofnumber;

所以当你进入你想要使用数组的页面时,只需要爆炸你的字符串。前 :

# Required before $_SESSION can be accessed.
session_start();


# Explode back to an array using | as the needle.
$number=explode('|', $_SESSION['string']);

您的数组现在是 $number的值。

<?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>