PHP isset()vs!空的()
问题是当我使用PHP isset()vs!空的(),php,isset,Php,Isset,问题是当我使用 $fname = isset($_POST['fname']) ? $_POST['fname'] : 'sample'; die($fname); 在PHP端,表单提交后,填写fname字段得到的输出与我填写的完全一样,提交后,填写未填写fname输入字段,得到的输出完全没有任何内容。使用代码!改为空 $fname = !empty($_POST['fname']) ? $_POST['fname'] : 'sample'; die($fname); 在使用未填充的fnam
$fname = isset($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);
在PHP端,表单提交后,填写fname字段得到的输出与我填写的完全一样,提交后,填写未填写fname输入字段,得到的输出完全没有任何内容。使用代码!改为空
$fname = !empty($_POST['fname']) ? $_POST['fname'] : 'sample';
die($fname);
在使用未填充的fname输入字段提交后,获取输出sampleisset()
只需检查变量是否为NULL
,如果访问数组中未定义的索引,则不会抛出E_note错误(与为NULL()
不同)
它不检查变量是否包含空字符串 你的问题是什么
在这种情况下,在$\u POST['key']
上使用isset()
将返回true
,因为变量本身已经设置并从表单传递。因为您正在将$\u POST['fname']
的值分配给$fname
变量,所以即使该值为空,也将始终分配该值
empty()
如果没有为该变量赋值,则将返回false。我似乎完全希望如此
您提交了一个表单,其中包含一个名为fname
的元素,因此即使表单为空,它仍然被设置
意思是isset
的计算结果为true,因此如果提交时不带任何内容,则不会输出任何内容这是因为“fname”变量无论如何都会发送,它只是空的,但会发送
尝试将表单方法从POST更改为GET,您将自己看到。我觉得这是对的。当输入字段被发送为空时,它将在$\u POST
数组中为空,而不是NULL
$_POST['fname'] = "";
isset($_POST['fname']) == true;
$_POST['fname'] = "";
!empty($_POST['fname']) == false;
您可以使用array\u key\u exists
检查它是否在$\u POST
数组中,而不是isset
:
$_POST['fname'] = "";
array_key_exists('fname', $_POST) == true; // independent of its value
人们可能希望is\u null()
检查它是否为null,并isset()
检查它是否已设置。遗憾的是,您的描述是准确的。其他人可能希望看到RTFM不是一个有效的答案。