PHP isset()返回false何时应返回true?

PHP isset()返回false何时应返回true?,php,isset,Php,Isset,好吧。。。因此,在我的表单中,我将所有字段设置为如下内容: name=“formdata['name']”和name=“formdata['active']” 当然,这意味着在这些字段中输入的任何内容都应该存储在$\u POST['formdata']['name']和$\u POST['formdata']['active']中 我这样做是因为我将“formdata”传递给我编写的两个函数(它们应该工作)。现在让我们假设我使用它来编辑一个项或添加一个新项——名称将按其应该的方式通过这些函数,并

好吧。。。因此,在我的表单中,我将所有字段设置为如下内容:

name=“formdata['name']”和
name=“formdata['active']”

当然,这意味着在这些字段中输入的任何内容都应该存储在
$\u POST['formdata']['name']
$\u POST['formdata']['active']

我这样做是因为我将“formdata”传递给我编写的两个函数(它们应该工作)。现在让我们假设我使用它来编辑一个项或添加一个新项——名称将按其应该的方式通过这些函数,并且项将以其名称保存,但“active”永远不会按其应该的方式保存。输入字段是一个复选框——如果选中,则值为“1”

如果我在输入“Name”并选中“active”后打印($\u POST['formdata'])
,我会得到以下信息:
数组(['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";
它们都返回错误!我对此感到困惑。我是否忽略了一些非常简单的事情?我已经考虑了至少两个小时了。

缺少括号:

if (!isset($_POST['formdata']['active'])) echo "Error 1";
if (empty($_POST['formdata']['active'])) echo "Error 2";

删除HTML中输入名称的单引号,使其显示:

name="formdata[active]"
添加单引号意味着您必须以以下方式访问PHP中的数组:

$_POST['formdata']['\'active\'']


非常不方便。

前两项无效;它们的括号不匹配。你把所有东西都放在一个名为
formdata
的参数中有什么(好的)原因吗?试着把变量变量变量转储以测试它是否真的被设置了?@minitech——你是对的,缺少括号。我只是在这里的问题框中输入了这些行,而不是复制/粘贴——我可以向您保证,在我的实际.php文件中,这些行的语法是正确的。是的,我有足够的理由将它们放入
formdata
——我将其传递给函数,这些函数从表单中获取数据并自动设置对象的属性,并构建一个“返回”,以便在模型验证输入并将用户带回表单时发现错误,输入的字段将已经填写。@BloodyWorld--
var\u dump($\u POST['formdata']['active'])打印为空,即使
打印($\u POST['formdata'])显示
['active']=>1
。谢谢!我知道这一定是很明显的愚蠢的事情!:)
$_POST['formdata']["'active'"]