Базовая логическая логика - Как проверить условие, только если выполняется другое условие - PullRequest
2 голосов
/ 26 июля 2011

Я знаю, что это базовая логическая логика, но я застрял:

Я перебираю результаты в базе данных, и для каждого из них мне нужно проверить следующее условие:

if($old_value != $new_value)

Если вышеприведенное верно, действие:

$old_value = $new_value;

Но есть вторичное условие.Если строка имеет тип «дата», мне нужно также проверить, что $new_value не пусто, но действие остается тем же.Прямо сейчас я делаю это так:

if($old_value != $new_value) {
     if($type != date) {
         $old_value = $new_value;
     } elseif(!empty($new_value)) {
         $old_value = $new_value;
     }

Я упростил вышесказанное, но на самом деле это однострочное действие на самом деле состоит из нескольких строк, которые, я знаю, мне не нужно повторять на основевторичное состояние.

Но я не знаю, как правильно соединить внутреннее состояние с внешним.Если я сделаю что-то вроде:

if(($old_value != $new_value) && ($type == 'date' && !empty($new_value))

Тогда единственный раз, когда он вернет true, это когда строка имеет тип date.

Ответы [ 2 ]

5 голосов
/ 26 июля 2011

Попробуйте:

  if(($old_value != $new_value) && ($type != 'date' || !empty($new_value))

Это должно сделать это. Дайте мне знать, если вам нужна помощь, чтобы понять, почему.

2 голосов
/ 26 июля 2011

if(($old_value != $new_value) && ($type != 'date' || ($type == 'date' && !empty($new_value))) Может быть, это можно сделать короче, но я не могу придумать, как.

...