Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单提交:foreach循环中的PHP S_会话语句_Php_Arrays_Forms_Session_Foreach - Fatal编程技术网

表单提交:foreach循环中的PHP S_会话语句

表单提交: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

假设我有下面的PHP代码,它试图从一个名为
$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的建议添加引号?我的第一个猜测是。。