【问题标题】:Form submission: PHP S_SESSION statements within a foreach loop表单提交:foreach 循环中的 PHP S_SESSION 语句
【发布时间】:2013-01-24 20:53:49
【问题描述】:

假设我有以下 PHP 代码,它尝试从一个名为 $arr 的数组中读取,该数组采用值 {fullname, studentnumber, email}。提交我的 HTML 表单后,此 PHP 代码将执行 foreach 循环,并将发布到页面的值存储在 $_SESSION 数组中。

foreach($arr as $field):
    $_SESSION[$field] = $_POST[$field];
endforeach;

上面的代码没有按预期工作。如果我用下面的代码替换上面的代码块,我页面上字段中的值会正确存储在$_SESSION 数组中。

$_SESSION[fullname] = $_POST[fullname];
$_SESSION[studentnumber] = $_POST[studentnumber];
$_SESSION[email] = $_POST[email];

我如何以一种高效且可扩展的方式实现这一目标?我不想每次向表单添加新字段时都编写新的 $_SESSION 语句。

EDIT: // 第一个代码块实际上按预期工作。原来有错别字!

【问题讨论】:

  • 如果$arr 被填充为数组$arr = array('fullname','studentnumber','email'),您所拥有的应该 工作
  • 鉴于您有未引用的数组键,我们必须假设您没有打开错误报告,因此您的代码中可能存在其他一些问题。 error_reporting(E_ALL); ini_set('display_errors', 1); 你会看到一堆关于使用未定义常量的注意事项。这些数组键应该像$_SESSION['fullname']
  • 愚蠢的我。 $POST 中有一个错字;它应该是 $_POST!不敢相信我忽略了那个。感谢 Michael 和 @asifrc 的回复。很抱歉因为琐事打扰了你们。

标签: php arrays forms session foreach


【解决方案1】:

你想要的是使用 array_keys() 否则你会得到数组内容。

foreach (array_keys($arr) as $field)

让我知道这是否有效/是您正在寻找的:)

【讨论】:

  • 我正在寻找的是在我的页面中使用字段元素的实际名称,而不是增量。在第二个代码块中,我使用了变量fullnamestudentnumberemail。我希望从$_POST 中获取这些值,并根据它们的字段名称插入到 foreach 循环中的$_SESSION 数组中。
  • 其实我的代码应该是foreach (array_keys($_POST) as $field),但是如果你用的是$arr,那就更安全了。您是否遵循@michael 的添加引号的建议?我的第一个猜测是……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多