我有以下内容来检查表单字段是否已填充。如果设置了$priceperpererson字段,则基于该字段计算$rentalprice;如果未设置,则基于$baserentalprise计算$rental价格。
$priceperperson = ($_POST['priceperperson']);
$baserentalprice = ($_POST['rentalprice']);
$numberofguests = ($_POST['numberofguests']);
if (isset($priceperperson)) {
$rentalprice = ($priceperperson * $numberofguests * $numberofnights);
} elseif (!isset($priceperperson)) {
$rentalprice = $baserentalprice;
}
更新:我的问题是,我似乎无法将租金设置为$baserentalprice。$pricepererson计算是有效的,但当我从表单中删除$priceperson字段的内容并再次启动ajax时,它就不起作用了。无论哪种方式,它都会在"其他"之后失败。
更改块
if (isset($priceperperson)) {
$rentalprice = ($priceperperson * $numberofguests * $numberofnights);
} elseif (!isset($priceperperson)) {
$rentalprice = $baserentalprice;
}
至
if (isset($priceperperson) && $priceperperson != '') {
$rentalprice = ($priceperperson * $numberofguests * $numberofnights);
} else {
$rentalprice = $baserentalprice;
}
''
),则isset()
将返回true
。您可以改用empty()
。
if (!empty($priceperperson)) { /* ... */ }
不过要小心。如果您期望例如0
,则empty
将返回可能不需要的true
。
不过,通常建议先进行isset
或empty
检查。这将防止生成警告。
使用三元运算符可以很容易地做到这一点。
$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;
}
您不再需要if
中的isset
(或empty
),因为您已经检查过了。如果您想允许例如0
作为有效值,您可以将条件更改为$priceperperson != ''
。
我还将您的elseif
更改为常规else
,因为条件只是反转的。