PHP - 如果一直只做第一个条件,为什么?

时间:2018-01-20 21:15:39

标签: php arrays laravel if-statement

为什么IF(最新的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);
      }
    }
  }

2 个答案:

答案 0 :(得分:2)

可能是 -

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

答案 1 :(得分: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') {
    // ...
}