php - 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"]
解决方案
尝试在你的 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';
}
推荐阅读
- c# - 如何在asp.net的gridview中标记标记为“已确认”的模板字段?
- python-3.x - 使用 Python3 进行网页抓取
- javascript - 如何删除一个在 JS 中使用按钮
- python - 使用 python 将具有不同架构的项目附加到 Avro 中的现有文件
- python - 如何在日志文件中记录串口输入?
- c++ - 了解 C 中的线程以及如何使用它们进行排序
- python - SQLAlchemy:没有名为“mysql”的模块
- anaconda - Conda 打包和 C 库作为依赖项
- c - 如何使用 structs 数组制作玩家列表?
- javascript - 执行两个异步调用时结果未定义