关于$_POST表单的机制:诸如普通input一类的字段,如果你不填写并且也没用默认值,php的相应$_POST字段值会是'',注意它是空字符串,或者叫空字节'\0',而不是php的NULL常数,所以isset($_POST['此字段'])值为真。诸如checkbox一类的字段,如果你不填写则$_POST中根本不会有此字段,则isset($_POST['此字段'])值为假。
测试代码:
<html>
<head></head>
<body>
<form name="form1" method="post" action="">
<input type="text" name="name"></input>
<input type="checkbox" name="fond[]" value="1">Music <input type="checkbox" name="fond[]" value="2">Artist
<input type="submit" name="submit"></input>
</form>
</body>
</html>
<?php
var_dump($_POST);
echo 'Normal test,1 for isset:',isset($_POST['name']),'<br>';
echo 'Checkbox test,1 for isset:',isset($_POST['fond']);
运行结果:
不填写普通input字段也不选择checkbox任何一项的情况
填写普通input字段并且选择至少一项checkbox的情况