表单提交:foreach循环中的PHP S_会话语句
假设我有下面的PHP代码,它试图从一个名为表单提交:foreach循环中的PHP S_会话语句,php,arrays,forms,session,foreach,Php,Arrays,Forms,Session,Foreach,假设我有下面的PHP代码,它试图从一个名为$arr的数组中读取,该数组的值为{fullname,studentnumber,email}。提交HTML表单后,此PHP代码将执行foreach循环,并将发布到页面的值存储在$\u SESSION数组中 foreach($arr as $field): $_SESSION[$field] = $_POST[$field]; endforeach; $_SESSION[fullname] = $_POST[fullname]; $_SESSI
$arr
的数组中读取,该数组的值为{fullname,studentnumber,email}。提交HTML表单后,此PHP代码将执行foreach循环,并将发布到页面的值存储在$\u SESSION
数组中
foreach($arr as $field):
$_SESSION[$field] = $_POST[$field];
endforeach;
$_SESSION[fullname] = $_POST[fullname];
$_SESSION[studentnumber] = $_POST[studentnumber];
$_SESSION[email] = $_POST[email];
上面的代码不能按预期工作。如果我用下面的代码替换上面的代码块,我页面上字段中的值将正确存储在$\u会话
数组中
foreach($arr as $field):
$_SESSION[$field] = $_POST[$field];
endforeach;
$_SESSION[fullname] = $_POST[fullname];
$_SESSION[studentnumber] = $_POST[studentnumber];
$_SESSION[email] = $_POST[email];
我如何以高效且可扩展的方式实现这一点?我不希望每次向表单添加新字段时都必须编写新的$\u会话语句
EDIT://第一块代码实际上按预期工作。原来是打字错误 您需要使用array_keys(),否则将获得数组内容
foreach (array_keys($arr) as $field)
让我知道这是否有效/是您正在寻找的:)如果将
$arr
填充为数组$arr=array('fullname'、'studentnumber'、'email')
假设您有未引用的数组键,我们必须假设您没有打开错误报告,所以代码前面可能还有其他问题<代码>错误报告(E_全部);ini设置(“显示错误”,1)您将看到一堆关于使用未定义常量的通知。。这些数组键应该像$\u SESSION['fullname']
愚蠢的我一样引用。$POST中有一个拼写错误;应该是$\u POST!真不敢相信我竟然忽略了那个。感谢Michael和@asifrc的回复。很抱歉用这些琐碎的事情来打扰你们。我要找的是在我的页面中使用字段元素的实际名称,而不是增量。在第二段代码中,我使用变量fullname、studentnumber和email。我希望从$\u POST
中获取这些值,并根据它们的字段名插入到foreach循环中的$\u会话
数组中。实际上,我的代码应该是foreach(array\u key($\u POST)as$field)
,但如果使用$arr,则更安全。你有没有按照@michael的建议添加引号?我的第一个猜测是。。