0
<?php
$a = $_POST['a'];
$b = $_POST['b'];
$c;

if(is_numeric($a) && is_numeric($b)){
echo "string";
exit();
}

if(!is_numeric($a) && !is_numeric($b)) {
echo "string";
exit();
}

if(isset($a)){
$resultat=$b*2.54;
echo "string " . $c . " string";
exit();
}

if(isset($b)){
$resultat=$a/2.54;
echo "string " . $c . " string";
exit();
}
?>

我首先检查表单字段 1 和 2 是否保存数字值,然后检查两者是否都保存值。这很好用,但是当我进入第二部分时,它永远不会超过第一个“if”,它总是看到“a$”为集合......

我必须用例吗?或者 ?

4

3 回答 3

0

变量 $a 的值是 $_POST['a'],当这个值为空时 PHP 会抛出一个通知错误,所以你需要做的第一件事就是使用 isset。

$a = isset($_POST['a']) ? $_POST['a'] : null //Set $a to $_POST['a'] when NOT empty

PHP 中的 isset 函数仅在变量未设置时才返回 true,即使值为 null。

第二件事是检查值是否为空,最好的办法是使用松散比较:

if ($a == null) {
    echo 'A is emty..';
}

这样,值:“”、0、null 和 false 将被视为“空”。

如果您想知道该值是否实际上为 null 是使用三元组“=”的严格比较:

if ($a === null) {
    echo 'A is empty';
}
于 2013-01-09T18:43:19.270 回答
0

当您检查时,您期望一个空字符串if(isset($a))。问题是您正在检查它是否已设置,而不是它是否为空。当您实例化它时,该变量在您的第一行中设置。该表单将一个空字符串传递给 $_POST,因此您应该检查 $a 是否不是空字符串。

if ($a !== '') {
    $resultat=$b*2.54;
    echo "string " . $c . " string";
    exit();
}
于 2013-01-09T18:05:02.627 回答
0

好吧,从技术上讲,$a 将始终被设置,因为它被设置为 $_POST['a']。所以每次都会“设置”,即使 $_POST['a'] 是空的。尝试使用这个:

if (!empty($a))

这将检查 $a 是否不为空。

于 2013-01-09T18:30:45.403 回答