我有一个页面(dest.php)作为php会话的一部分,每次在另一个页面(source.php)上的表单提交给这个,我需要从POST
添加字符串作为$_SESSION
变量中的另一个元素。
所以我的想法是,我将得到几个POST
变量(['name']
, ['gender']
等),并需要将它们添加到相应的$_SESSION
变量数组,所以第一次提交表单,我将有$_SESSION['name'][0] = $_POST['name']
和每个后续提交从source.php将发送新的$_POST
变量,并在dest.php上,我需要添加到$_SESSION
数组,以便end($_SESSION['name']) = $_POST['name']
在任何时候。
我有一些php稍后在dest.php应该回显所有的$_SESSION
变量在一个表中,但它目前处理一些字符串不同于其他。
<table>
<?php
for($cntr = 0; $cntr < count($_SESSION['name']); $cntr++)
{
echo '<tr><td><input type="button" name="' . $cntr . '" value="edit"></td><td>';
echo $_SESSION['name'][$cntr] .' adopted a ' . $_SESSION['gender'][$cntr] . ', ' . $_SESSION['colors'][$cntr];
echo $_SESSION['species'][$cntr] . ' when visiting ' . $_SESSION['city'][$cntr] . '!' ;
echo '</td></tr>';
}
?>
</table>
作为参考,格式为:
<form action="petSentence.php" method="POST" accept-charset="UTF-8">
<table><tr><td>
Your name: <input type="text" name="name"></td></tr><tr><td>
<bold>Pick a city</bold></br>
<input type="radio" name="city" value="Portland"> Portland<br>
<input type="radio" name="city" value="Seattle"> Seattle<br>
<input type="radio" name="city" value="Corvallis"> Corvallis</td><td>
<bold>Pick the color(s)</bold>
<input type="checkbox" name="colors[]" value="brown"> brown<br>
<input type="checkbox" name="colors[]" value="red"> red<br>
<input type="checkbox" name="colors[]" value="green"> green<br>
<input type="checkbox" name="colors[]" value="blue"> blue</td></tr>
<tr><td>
Gender: <select name="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select></td><td>
What Species:
<select name="species">
<option value="cat">cat</option>
<option value="dog">dog</option>
<option value="bird">bird</option>
<option value="chinchilla">chinchilla</option>
</select></td></tr>
<tr><td><input type="submit" value="Submit"></td></tr>
</table>
</form>
和我如何构建$_SESSION
数组的一个例子:
if(isset($_SESSION['name']))
{
array_push($_SESSION['name'], $_POST['name']);
}
else
{
$_SESSION['name'] = $_POST['name'];
}
if(isset($_SESSION['gender']))
{
array_push($_SESSION['gender'], $_POST['gender']);
}
else
{
$_SESSION['gender'] = $_POST['gender'];
}
除了['name']
变量是按预期打印,但['gender']
数组打印,如果它只是一个大字符数组
简化。不需要if
s和else
s:
$_SESSION['name'][] = $_POST['name'];
$_SESSION['gender'][] = $_POST['gender'];
需要确保$_SESSION["gender"]
和$_SESSION["name"]
最初是作为数组创建的。在添加
。
function append_to_session_array($var_name)
{
if (is_array($_SESSION[$var_name]))
{
$_SESSION[$var_name][] = $_POST[$var_name];
}
else
{
$_SESSION[$var_name] = array($_POST[$var_name]);
}
}
foreach (array("gender","name") as $v)
{
append_to_session_array($v);
}