所以我有一个带有模态的表单,该模态有3行,每行有2个文本字段,如果用户(我在这个prod的情况下)只填充2行,并将另一行留空,第三个值应为NULL。
在我的剧本中我得到了:
if (!is_null($_POST['packageDependencies']['bundle'][2])) {
$packageDependency3 = $_POST['packageDependencies']['bundle'][2] . "|" . $_POST['packageDependencies']['version'][2] . "|" . $_POST['packageDependencies']['repository'][2];
$depends = "<key>dependencies</key>
<array>
<string>$packageDependency1</string>
<string>$packageDependency2</string>
<string>$packageDependency3</string>
</array>
";
}
所以我正在检查if (!is_null($3rdRow)) { //Do this }
,但变量$_POST['packageDependencies']['bundle'][2]
实际上是NULL,因为我使用var_dump($_POST['packageDependencies']['bundle'][2]);
并且我将NULL
打印到页面,但if
语句仍在处理,就像不是 NULL
一样。
$depends
获取fwrite()
到XML文件,当我打开它时,我只看到||
,但由于变量为NULL,因此我不应该在那里没有在这些输入字段中输入任何值。
答案 0 :(得分:1)
根据我的建议,更完整的解决方案是:
if (!empty(trim($_POST['packageDependencies']['bundle'][2]))) {
NULL是变量的特定状态,涉及PHP将变量名称与变量位置相关联的方式。您可以将其视为标志,表示存在变量名称,但没有与之关联的存储位置。有许多情况是空的,修剪将捕获,将绕过检查空。
答案 1 :(得分:0)
即使!empty()
成功了,我也决定使用==
来减少歧义。找到的答案here非常直观。
编辑:根据@gview,添加(!empty(trim($var)))
是最好的选择,就好像用户在标签后意外按空格键一样,这样可以避免任何错误。