好吧...所以在我的表单上,我将所有字段设置为如下所示:
name="formdata['name']"
和 name="formdata['active']"
。
当然,这意味着在这些字段中输入的任何内容都应存储在 $_POST['formdata']['name']
和 $_POST['formdata'][' 中事件']
。
我这样做是因为我将“formdata”传递给了我编写的几个函数(它们应该正常工作)。现在假设我正在使用它来编辑项目或添加新项目 - - 名称将按其应有的方式执行这些功能,并且该项目将以其名称保存,但“事件”永远不会按其应有的方式保存。输入字段是一个复选框——如果选中,则值为“1”。
如果我在输入“Name”并检查“active”后print_r($_POST['formdata'])
,我会得到:Array (['name'] => Name ['active'] => 1)
.
看起来不错,对吧?但是当我执行以下操作时:
if (!isset($_POST['formdata']['active']) echo "Error 1";
if (empty($_POST['formdata']['active']) echo "Error 2";
if ($_POST['formdata']['active'] != 1) echo "Error 3";
它们都返回错误!我对此感到困惑。我是否忽略了一些非常简单的事情?我已经想了至少 2 个小时了。
最佳答案
删除 HTML 中输入名称中的单引号,使其显示为:
name="formdata[active]"
添加单引号意味着您必须在 PHP 中访问数组,如下所示:
$_POST['formdata']['\'active\'']
或
$_POST['formdata']["'active'"]
这非常不方便。
关于PHP isset() 返回 false 什么时候应该返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8569293/