好吧......所以在我的表格中,我将所有字段设置为这样的字体:
name="formdata['name']"
和name="formdata['active']"
。
当然,这意味着在这些字段中输入的内容应存储在$_POST['formdata']['name']
和$_POST['formdata']['active']
中。
我以这种方式做我的价值因为我将'formdata'传递给我写的几个函数(它们可以正常工作。)现在让我说我用它来编辑一个项目或添加一个新项目 - - 名称将按原样执行这些功能,项目将以其名称保存,但“活动”将永远不会保存。输入字段是一个复选框 - 如果选中它,则值为“1”。
如果我在输入“姓名”并选中“有效”后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个小时了。
答案 0 :(得分:4)
从HTML中删除输入名称中的单引号,使其显示为:
name="formdata[active]"
添加单引号意味着您必须在PHP中访问数组:
$_POST['formdata']['\'active\'']
或
$_POST['formdata']["'active'"]
非常不方便。
答案 1 :(得分:0)
缺少括号:
if (!isset($_POST['formdata']['active'])) echo "Error 1";
if (empty($_POST['formdata']['active'])) echo "Error 2";