首页 > 解决方案 > PHP 简单的 If 语句失败

问题描述

尽管日志文件确认值满足所需条件,但我的 if 语句不起作用。

正如您将在下面看到的那样,我尝试同时使用布尔值和数值(正如我所读到的,PHP 中有一些布尔语句的怪癖。)

  $lift = isset($p["lift"]) ? $p["lift"] : 0;
  $parking = isset($p["parking"]) ? $p["parking"] : false;

// LIFT
  if ( $lift === 1 && $home ) {
    $query .= " AND `lift` == $lift";

  }

  // PARKING
  if ( $parking === 1 && $home ) {
    $query .= " AND `parking` != '';";
  }


  $log_file = "../../queries.log"; 
  $error_message = "query: '$query' \n\n lift: ".$lift."\n home: ".$home."\n";  
  error_log($error_message, 3, $log_file);

我已经尝试过双重和三重相等运算符但没有成功。我已经尝试过布尔值和数值。日志语句打印以下内容:

'SELECT id, ref_crm, `type`, prov_name, prov_id, muni_name, muni_id, barrio, price_latest, photo,sqm,bed,bath,lift,parking,`year`,descr,
            x(pt) as lat, y(pt) as lng, ref_cat FROM outlet WHERE prov_id = '06' AND `type` = 'Piso' AND price_latest >= 0 AND price_latest <= 500000 AND sqm >= 0 AND sqm <= 200'

 lift: 1

 home: true 

如您所见,尽管两个条件都满足,但字符串语句并未附加到查询中。

我还尝试删除我创建的变量 ($lift$home) 并简单地使用$p["lift"]$p["parking"]没有成功。我能够完成这项工作的唯一方法是在条件之上特别声明$lift === 1$home === true(双或三等号运算符)。尽管日志确认这些变量已经设置了这些值!我还尝试过使用 and 的双重和三重等号运算$home$p["home"]

标签: phpif-statementconditional-statements

解决方案


尝试在你的 if 语句中呼应一些东西。

另请注意:
https ://www.php.net/manual/en/language.operators.comparison.php

解决方案:

if (!empty($home) && $lift == 1) {
 echo 'Lift works';
} else {
 echo 'Lift is not 1';
}

if (!empty($home) && $parking == 1) {
 echo 'Parking works';
} else {
 echo 'Error: home parking is not 1';
}

推荐阅读