2012-07-20 70 views
4

這可以在Javascript中使用isNAN而不是!isset完成。 使用下面的例子 - 這兩個表單發佈到我的腳本,一個沒有價值,一個有價值。下面的代碼是一個正確的方式來做到這一點在PHP中分配一個值,如果後var不存在?PHP:檢查發佈的變量是否存在或分配空值

$ mycheck =!isset($ _ POST ['value'])? 0:$ _POST ['value'];

<? 
if($_POST) : 
    $mycheck = !isset($_POST['value']) ? 0 : $_POST['value']; 
    echo $mycheck; 
endif; 
?> 

<!-- send value--> 
<form action="" method="post"> 
    <select name="value"> 
    <option value="0">0</option> 
    <option value="5">5</option> 
    </select> 
    <input type="submit" name="submit"> 
</form> 

<!-- doesn't send value--> 
<form action="" method="post"> 
    <input name="different_var"> 
    <input type="submit" name="submit"> 
</form> 
+0

也http://stackoverflow.com/a/3803347/632951 – Pacerier 2015-01-26 12:45:57

回答

6

是的,這是設置默認值的可接受方式。

的替代,在PHP 5.3中引入的,省去您的三元表達式的中間論點:

$mycheck = $_POST['value'] ?: 0; 

然而,這很可能會拋出通知的嘗試與一個不存在的關鍵,如果要訪問數組$_POST['value']未設置。因此,您的原始方法更爲接受。

+0

根據OP的意圖,它應該是'$ _POST ['value']'而不是'isset($ _ POST ['value'])'' 。 – Palladium 2012-07-20 16:13:14

+0

已經修復:) – 2012-07-20 16:13:54

+0

我認爲'isset()'完全可以接受這個解決方案。它總是會給真或假,並且會完全按照OP的要求來做... – VictorKilo 2012-07-20 16:16:27

1

它可行,但有一個更清晰的書寫方式。

隨着PHP 5.3的,可以縮短三元操作下來兩個表達式,像這樣:

$mycheck = $_POST['value'] ?: 0; 

這基本上意味着你已經擁有。