我有一个页面(dest.php)作为php会话的一部分,每当另一个页面上的表单(source.php)提交给这个页面时,我需要添加来自{{1}的字符串}作为POST
变量中的另一个元素。
所以我的想法是,我会得到几个$_SESSION
变量(POST
,['name']
等)并需要将它们添加到相应的['gender']
变量数组,所以第一次提交表单时,我会有$_SESSION
,source.php的每个后续提交都会发送新的$_SESSION['name'][0] = $_POST['name']
变量,而在dest.php上,我需要添加到$_POST
数组,以便始终$_SESSION
。
我后来在dest.php中有一些php应该在表中回显所有end($_SESSION['name']) = $_POST['name']
个变量,但它目前正在处理一些与其他字符串不同的字符串。
$_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']
数组打印就好像它只是一个大字符数组。
答案 0 :(得分:2)
简化。无需if
和else
s:
$_SESSION['name'][] = $_POST['name'];
$_SESSION['gender'][] = $_POST['gender'];
答案 1 :(得分:1)
您需要确保$_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);
}
最初是作为数组创建的。你还应该确保它们不仅仅是你设置的,而是在你追加之前的数组:
e.g。
uint8_t