PHP基于零,空或值返回输出

时间:2013-07-23 10:56:16

标签: php wordpress key-value string

我有一个简单的要求,证明是困难的。我正在使用Wordpress存储元值'session_capacity',这可以有以下可能的值

  • 0
  • 整数,例如99
  • 没什么,留空了

问题是当存储的值为零时,我无法确定使用什么设置来根据它是零还是空来回显不同的语句。

这是我想要的输出......

if(零)   // 做一点事 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;
}

3 个答案:

答案 0 :(得分:1)

而不是empty()使用is_null()

它应该是这样的:

function get_session_capacity($post_id){
    $session_capacity = get_post_meta($post_id, 'session_capacity', true);

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

编辑:感谢评论部分提示的insanebits。 :)

答案 1 :(得分:1)

您可以检查是否设置了$session_capacity,并相应地设置

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

甚至更好

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

后者即使变量设置为空字符串也能工作。如果未设置0(空白)

,则不会$session_capacity

答案 2 :(得分: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!