PHP - ЕСЛИ выполняет все время только первое условие, почему? [Дубликат]

0

почему IF (последний с else if и else) делает все время только первое условие и только первую часть ($ filtry_1value [$ key] = 'min_cena'), даже если условие не должно быть истинным. У меня есть другое решение (менее динамичное), если я не исправлю это, но я хотел бы знать, почему он не работает... Я думаю, что это будет тривиально, но я не вижу этого.

PS: Я работаю с laravel.

$filtry_1value = ['stat', 'lokalita', 'patro', 'min_cena', 'max_cena', 'min_uzitna_plocha', 'max_uzitna_plocha'];

  foreach ($filtry_1value as $key => $filtr_1value) {
  $filtr_1value = \Request::has($filtr_1value) ? \Request::get($filtr_1value) : null;
    if(!empty($filtr_1value)){
      if ($filtry_1value[$key] = 'min_cena' OR $filtry_1value[$key] = 'min_uzitna_plocha') {
        $query->where(substr($filtry_1value[$key], 4),'>=',$filtr_1value);
      }
      elseif ($filtry_1value[$key] = 'max_cena' OR $filtry_1value[$key] = 'max_uzitna_plocha') {
        $query->where(substr($filtry_1value[$key], 4),'<=',$filtr_1value);
      }
      else {
        $query->where($filtry_1value[$key],'=', $filtr_1value);
      }
    }
  }
Теги:
arrays
if-statement

2 ответа

2

может be-

foreach ($filtry_1value as $key => $filtr_1value) {
  $filtr_1value = \Request::has($filtr_1value) ? \Request::get($filtr_1value) : null;
    if(!empty($filtr_1value)){
      if ($filtry_1value[$key] == 'min_cena' OR $filtry_1value[$key] == 'min_uzitna_plocha') {
        $query->where(substr($filtry_1value[$key], 4),'>=',$filtr_1value);
      }
      elseif ($filtry_1value[$key] == 'max_cena' OR $filtry_1value[$key] == 'max_uzitna_plocha') {
        $query->where(substr($filtry_1value[$key], 4),'<=',$filtr_1value);
      }
      else {
        $query->where($filtry_1value[$key],'=', $filtr_1value);
      }
    }
  }
0

Для сравнения вам нужно использовать знак двойного равенства. == не один =

Ваш if должен выглядеть так:

if ($filtry_1value[$key] == 'min_cena' OR $filtry_1value[$key] == 'min_uzitna_plocha') {
    // ...
} elseif ($filtry_1value[$key] == 'max_cena' OR $filtry_1value[$key] == 'max_uzitna_plocha') {
    // ...
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню