代码之家  ›  专栏  ›  技术社区  ›  Sam

多条件php if语句,仅当变量有值时

  •  -2
  • Sam  · 技术社区  · 6 年前

    我有以下if语句,如果example=sidebar、date start<now和date end>now,我想返回true。它按原样工作,但问题是如果其中一个值不存在,则该语句为假。

    如果设置了每个变量($position、$date_start、$date_end),如何将语句更改为仅添加条件?如果未设置其中一个变量,则该部分条件将被忽略。 例如,如果没有日期\结束,它将只评估职位和日期\开始

    <?php 
    if ($position == "sidebar" && 
        $date_start < strtotime('now') && 
        $date_end > strtotime('now')): 
    ?>
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Patrick Q    6 年前

    要检查每个变量是否未设置或是否等于所需的值

    <?php if (
        (!isset($position) || $position == "sidebar") && 
        (!isset($date_start) || $date_start < strtotime('now')) && 
        (!isset($date_end) || $date_end > strtotime('now'))
     ): ?>
    

    如果你想让未设置, null , '' (空字符串),以及 0 除了指定的字符串值之外,还可以检查 empty() 而不是 isset()

    <?php if (
        (!empty($position) || $position == "sidebar") && 
        (!empty($date_start) || $date_start < strtotime('now')) && 
        (!empty($date_end) || $date_end > strtotime('now'))
     ): ?>