2010-02-21 110 views
49

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

回答

51

是,PHP支持数组作为会话变量。例如,参见this page

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

+0

你能否请你清除疑问后面的问题..? – 2010-02-21 14:35:42

+1

如果您返回第一页并点击第二页(将数据放入会话中),会话数据将包含一组新数据。 – 2010-02-21 14:48:38

+0

谢谢我得到了.. :) – 2010-02-21 14:58:28

66

是的,你可以把数组中的会话,例如:

$_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

+0

那么我的问题的其他部分呢? – 2010-02-21 14:35:15

+0

@Anurag:我已经更新了我的问题,以解答问题的第二部分。谢谢:) – Sarfraz 2010-02-21 14:39:40

+0

非常感谢... – 2010-02-21 14:55:21

1

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

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