我有以下内容来检查天气是否已填充表格字段。如果设置了$ priceperperson字段,则根据该字段计算$ rentalprice,如果不是,则根据$ baserentalprice计算$ rental price。
$priceperperson = ($_POST['priceperperson']);
$baserentalprice = ($_POST['rentalprice']);
$numberofguests = ($_POST['numberofguests']);
if (isset($priceperperson)) {
$rentalprice = ($priceperperson * $numberofguests * $numberofnights);
} elseif (!isset($priceperperson)) {
$rentalprice = $baserentalprice;
}
更新: 我的问题是,我似乎无法将租赁价格设置为$ baserentalprice。 $ priceperperson计算有效但当我从表单中删除$ priceperperson字段的内容并再次激活ajax时,它将无法正常工作。无论哪种方式,它都会在“其他”之后失败。
答案 0 :(得分:1)
更改块
if (isset($priceperperson)) {
$rentalprice = ($priceperperson * $numberofguests * $numberofnights);
} elseif (!isset($priceperperson)) {
$rentalprice = $baserentalprice;
}
到
if (isset($priceperperson) && $priceperperson != '') {
$rentalprice = ($priceperperson * $numberofguests * $numberofnights);
} else {
$rentalprice = $baserentalprice;
}
答案 1 :(得分:1)
true
),
if (!empty($priceperperson)) { /* ... */ }
但是,要小心。如果您期待例如。 0
然后empty
将返回true
,这可能是不可取的。
通常,建议先进行isset
或empty
检查。这样可以防止生成警告。
您可以使用ternary operator轻松完成此操作。
$priceperperson = isset($_POST['priceperperson']) ? $_POST['priceperperson'] : '';
$baserentalprice = isset($_POST['rentalprice']) ? $_POST['rentalprice'] : '';
$numberofguests = isset($_POST['numberofguests']) ? $_POST['numberofguests'] : '';
if ($priceperperson) {
$rentalprice = ($priceperperson * $numberofguests * $numberofnights);
} else {
$rentalprice = $baserentalprice;
}
由于您已经检查过isset
,因此您不再需要empty
(或if
)。如果您想允许,可以将条件更改为$priceperperson != ''
。 0
作为有效值。
我还将elseif
更改为常规else
,因为条件只是反转了。