我在获取两个文本输入的值时遇到了一些困难:
<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语句创建$var
- if(isset($q1) && isset($q2)
- 而不是第二个 - if(isset($q1) && empty($q2)
。为什么会这样?
答案 0 :(得分:4)
您正在设置$q1
和$q2
,因此isset($q1)
和isset($q2)
将始终返回true。尝试
if(isset($_GET['q1']) && isset($_GET['q2'])) {
或测试空值:
if(empty($q1) && empty($q2)) {
答案 1 :(得分:4)
$ q2即使没有输入任何值也会设置。它是一个有效的表单字段(虽然包含一个空字符串)。
答案 2 :(得分:2)
您在执行作业时设置$ q1和$ q2:
$q1 = @$_GET['q1'];
$q2 = @$_GET['q2'];
如果用户没有填写第二个字段,$ q2只会被设置为空字符串。
字符串为空与字符串为空不相同。
从PHP手册中查看有关isset的页面:http://php.net/manual/en/function.isset.php
答案 3 :(得分:2)
if ($q1 != '' && $q2 != '') {
$var = "$q1, $q2";
} elseif($q1 != '') {
$var = "$q1";
}
答案 4 :(得分:0)
他们都被传递 - 但没有填补?我认为条件更像是:
!empty($_GET['q1']) && ($_GET['q1'] != '')
这样的一些组合应该有所帮助。我想象q1&amp;无论是否正在使用,都会发送q2。