变量不是空的,什么时候应该是空的?

时间:2013-01-09 17:54:20

标签: php

<?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&amp; 2持有数字值,然后检查两个是否保持值。 这很好,但是当我进入第二部分时,它永远不会超过第一部分“if”它总是看到“a $”作为设置...

我必须使用案例吗?还是?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

嗯,技术上总是会设置$ a,因为它设置为$ _POST ['a']。因此,即使$ _POST ['a']为空,它也会每次“设置”。试试这个:

if (!empty($a))

这将检查$ a是否为空。

答案 2 :(得分:0)

变量$ a将具有$ _POST ['a']的值,当此值为空时,PHP将抛出通知错误,因此您需要做的第一件事就是使用isset。

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

如果未设置变量,即使值为null,PHP中的isset函数也只会返回true。

第二件事是检查值是否为空,你可以做的最好的事情是使用松散的比较:

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

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

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

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