【发布时间】:2013-03-05 19:29:40
【问题描述】:
我在这个问题上苦苦挣扎了大约 2 个小时。
我想将我的 $_POST 变量插入到 $_SESSION 数组中,并将从表单发送的每个新数据附加到会话变量中。
现在,当我将会话变量定义为数组时,我会这样说吗?
$_SESSION['名称'];
或者像这样
$_SESSION['name'] = array();
我有两个 POST 变量,我想将每个变量插入一个会话数组中。
这是表格:
<form action="action.php" method="POST" >
<label>Moovie name: <input type="text" name="name" /></label><br />
<label>Price: <input type="text" name="price" /></label><br />
<input type="submit" value="Send" />
</form>
这里是 action.php
<?php
session_start();
$_SESSION['name'] = array();
$_SESSION['price'] = array();
$name = $_POST['name'];
$price = $_POST['price'];
array_push($_SESSION['name'], $name);
array_push($_SESSION['price'], $price);
print_r($_SESSION['name']);
echo "<br>";
print_r($_SESSION['price']);
?>
注意: 如果我说
$_SESSION['name']; instead of $_SESSION['name'] = array();
我得到警告:array_push() 期望参数 1 是数组,在 action.php 中给出 null
同样,$_SESSION['name'] 从一开始就是一个数组吗?
【问题讨论】:
-
检查是否
is_array,如果不是,则将它们设置为数组并继续,如果它已经初始化,则= array()代码将不会运行,因此您不会将其归零出去。 (或者,根据 PHP 的工作原理,您可以简单地使用$_SESSION['name'][] = $name;等,如果它不是一个数组,它将被合二为一。) -
@Jon
is_array()仍然会触发通知,如果密钥根本不存在,请使用isset()以及/代替:if (!isset($_SESSION['name'])) { $_SESSION['name'] = array(); }
标签: php session-variables http-post-vars