Многоусловный оператор PHP IF, только если переменная имеет значение - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть следующее утверждение if, я хочу вернуть TRUE, если example = sidebar, дата начала <сейчас и дата конца> сейчас.Он работает как есть, но проблема в том, что если одно из значений не существует, оператор ложный.

Как изменить оператор, чтобы добавить условия только для каждой переменной ($ position, $ date_start, $date_end) isset?Если одна из переменных не установлена, то эта часть условия будет игнорироваться.Например, если бы не было date_end, он будет оценивать только для позиции и date_start

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

1 Ответ

0 голосов
/ 10 сентября 2018

Вы хотите проверить, не установлена ​​ли каждая переменная ИЛИ, равно ли оно требуемому значению

<?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'))
 ): ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...