在SESSION变量中构建一个字符串数组(php)

时间:2016-07-02 17:04:30

标签: php arrays forms session

我有一个页面(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']数组打印就好像它只是一个大字符数组。

2 个答案:

答案 0 :(得分:2)

简化。无需ifelse 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