2013-01-09 69 views
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保存數字值,然後我檢查是否都保持值。 這工作正常,但當我到第二部分,它永遠不會過去第一個「如果」它總是看到「一個$」作爲集...變量不爲空,何時應該爲空?

我必須使用案例嗎?要麼 ?

+0

哪部分是,它從來沒有得到過的部分(我不能相當遵循)。另外:你爲什麼認爲$ a應該是空的? – DWright

+0

它通過表單獲得輸入,如果表單保留爲空,$ a應該是空的,如果(isset($ a))它永遠不會過去,即使未設置$ a並且$ b已設置 –

+6

'empty'和'isset'在PHP中是不同的。一個變量可以是空的,但是如果它是從你的表單傳遞的,那麼它就被設置了。 – Stan

回答

0

當您檢查if(isset($a))時,您期待空字符串。問題是你正在檢查它是否被設置,而不是如果它是空的。當你實例化這個變量時,這個變量被設置在你的第一行。表單將一個空字符串傳遞給$ _POST,所以你應該檢查$ a是不是一個空字符串。

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

那麼,從技術上講$ a總是會被設置,因爲它被設置爲$ _POST ['a']。因此,即使$ _POST ['a']爲空,它也會每次「設置」。嘗試使用此:

if (!empty($a)) 

這將檢查$ a是否不爲空。

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,空,假的會被視爲「空洞」。

如果你想知道,如果值實際上是空是使用進行嚴格比較三「=」:

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