我在获取两个文本输入的值时遇到一些困难:
<form action="search.php">
<input type="text" name="q1">
<input type="text" name="q2" >
<input type="submit" name="submit" value="Search" />
</form>
这是search.php页面:
$q1 = @$_GET['q1'];
$q2 = @$_GET['q2'];
if(isset($q1) && isset($q2)) {
$var= "$q1, $q2";
}
if(isset($q1) && empty($q2)) {
$var= "$q1";
}
当q1
和q2
都填写并发送时,它可以完美地工作。然而,当只有q1
输入被填写并发送时(留下q2
空白),它仍然使用第一个if语句——if(isset($q1) && isset($q2)
——而不是第二个——if(isset($q1) && empty($q2)
来创建$var
。为什么会发生这种情况?
您正在设置$q1
和$q2
,因此isset($q1)
和isset($q2)
将始终返回true。试着
if(isset($_GET['q1']) && isset($_GET['q2'])) {
或测试空值:
if(empty($q1) && empty($q2)) {
即使没有输入任何值,也会设置
$q2。这是一个有效的表单字段(尽管包含一个空字符串)。
你在赋值时同时设置了$q1和$q2:
$q1 = @$_GET['q1'];
$q2 = @$_GET['q2'];
在用户没有填写第二个字段的情况下,$q2被设置为空字符串。
字符串为空与字符串为空是不一样的。
看一下PHP手册中关于isset的页面:http://php.net/manual/en/function.isset.php
if ($q1 != '' && $q2 != '') {
$var = "$q1, $q2";
} elseif($q1 != '') {
$var = "$q1";
}
它们都被传递-但没有填充?我在想一个条件句,更像是:
!empty($_GET['q1']) && ($_GET['q1'] != '')
这些组合应该会有所帮助。我想象q1 &