0

我有一个简单的要求,但事实证明这很困难。我正在使用 Wordpress 存储元值“session_capacity”,它可以有以下可能的值

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

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

这是我想要的输出...

if (zero) // do something elseif (integer eg 99) // do something elseif (blank) // do something

实际功能...

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;
}
4

3 回答 3

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 在评论部分的提示。:)

于 2013-07-23T10:59:27.910 回答
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(空白)

于 2013-07-23T11:10:47.293 回答
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!
于 2013-07-23T11:02:52.223 回答