我有以下多个复选框选择:
<input type="checkbox" name="fruit_list[]" value="apple">Apple
<input type="checkbox" name="fruit_list[]" value="banana">Banana
<input type="checkbox" name="fruit_list[]" value="mango">Mango
<input type="checkbox" name="fruit_list[]" value="orange">Orange
表单通过POST方法连接到processor.php
。验证:
if ( empty($_POST['fruit_list']) ){
echo "You must select at least one fruit.<br>";
} else{
foreach ( $_POST['fruit_list'] as $frname ){
echo "Favourite fruit: $frname<br>";
}
}
我的问题(以上代码有效!但对我来说不明确):
如果我没有选中任何复选框然后提交表单,$_POST
数组是否包含名为$_POST['fruit_list']
的索引?
假设您的答案为“否”,那么如何将empty()
用于该不存在的数组元素?不存在的数组元素表示NULL
?
使用!isset($_POST['fruit_list'])
代替empty()
我一般了解empty()
和isset()
之间的区别。
你可以在这个例子中解释一下吗?
答案 0 :(得分:2)
1:不,$_POST['fruit_list']
为空
ISSET
检查变量是否已设置,换句话说,它检查变量是否为除NULL以外的任何值或未赋值。如果变量存在且ISCS不是NULL,则ISSET返回TRUE。这意味着设置了分配了“”,“0”,“0”或“FALSE”的变量,因此ISSET为TRUE。
EMPTY
检查变量是否为空。 Empty被解释为:“”(空字符串),0(0作为整数),0.0(0作为浮点数),“0”(0作为字符串),NULL,FALSE,array()(空数组) )和“$ var;” (声明的变量,但在类中没有值。
参考here
答案 1 :(得分:1)
$_POST['fruit_list']
的索引不,关键的fruit_list不存在
要检查数组中是否存在密钥,请更好地使用array_key_exists
,因为如果您有NULL值isset
则返回false
但在你的情况下,isset是一个好方法
isset
- 确定变量是否已设置且不为NULL(具有任何值)。
empty
- 确定变量是否为空(0,null,&#39;&#39;,false,array())但您无法理解变量或密钥是否存在
例如:
$_POST['test'] = 0;
print 'isset check: ';
var_dump(isset($_POST['test']));
print 'empty check: ';
var_dump(empty($_POST['test']));
$_POST['test'] = null;
print 'isset NULL check: ';
var_dump(isset($_POST['test']));
print 'key exists NULL check: ';
var_dump(array_key_exists('test', $_POST));
isset check: bool(true)
empty check: bool(true)
isset NULL check: bool(false)
key exists NULL check: bool(true)
答案 2 :(得分:0)
使用print_r()打印帖子数据..
<?php
echo "<pre>"; print_r($_POST);
if (empty($_POST['fruit_list']) ){
echo "You must select at least one fruit.<br>";
}
else{
foreach ( $_POST['fruit_list'] as $frname ){
echo "Favourite fruit: $frname<br>";
}
}
?>
如果您没有选中任何复选框,那么您将无法获得$ _POST ['fruit_list'],数组中不存在数组索引fruit_list
isset()
和empty()
Visit Here
答案 3 :(得分:0)
答案:
1。 $_POST
数组不包含$_POST['fruit_list']
2。第一个答案是“否”。如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在,empty()
不会生成警告。see in php.net
<强> 3 即可。 清空检查变量是否已设置,如果是,则将其检查为空,“”,0等。
Isset 只是检查它是否设置,它可以是任何非空的。 see