2013-07-23 62 views
0

我有一個簡單的要求,證明很困難。我使用Wordpress存儲的元值「session_capacity」,這可具有以下可能的值基於零,空值或值的PHP返回輸出

  • 整數例如99
  • 沒有,留空

問題是,當存儲的值是零,我想不出有什麼設置爲使用得到呼應根據是否是零或空不同的說法。

這是我想要的輸出...

如果(零) //做一些事情 ELSEIF(整數如99) //做一些事情 ELSEIF(空白) //做一些

實際功能...

function get_session_capacity($post_id){ 
    // Get the total capacity of this session 
    $session_capacity = get_post_meta($post_id, 'session_capacity', true); 
    // Meta value was sometimes stored as a string so converting to integer 
    $session_capacity = intval($session_capacity); 

    if($session_capacity === 0) 
     return 'You cannot book this session'; 
    elseif(empty($session_capacity)) 
     return default_session_capacity(); 
    else 
     return $session_capacity; 
} 
+0

空爲數組或字符串。 – Virus721

回答

1

代替empty()使用is_null()

它應該是這樣的:

編輯:感謝insanebits在評論部分的提示。 :)

+1

它不會工作,因爲intval(null)返回整數(0)所以is_null將返回false – insanebits

+0

你是對的,我會編輯我的答案:) –

+1

我相信這不會工作:P嘗試var_dump(''== 0),它應該返回true,所以空將被視爲零。 – insanebits

0
$values = array(null, 0, 99); 

$i = 1; 
foreach ($values as $value) { 
    if ($value === null) { 
    echo $i . ': equals null!<br />'; 
    } 
    if ($value === 0) { 
    echo $i . ': equals the integer 0!<br />'; 
    } 
    if (is_integer($value)) { 
    echo $i . ': contains any integer!<br />'; 
    } 
    $i++; 
} 

輸出:

1: equals null! 
2: equals the integer 0! 
2: contains any integer! 
3: contains any integer! 
1

如果$session_capacity設置與否,並設置您可以檢查是相應

$session_capacity = isset($session_capacity)? intVal($session_capacity) : null; 

甚至更​​好

$session_capacity = (isset($session_capacity) && !empty($session_capacity))? intVal($session_capacity) : null; 

的後者即使在變異時也能工作ble被設置爲空字符串。當未設置$session_capacity(空白)時,它不給出0(空白)