我正在开展一个项目。对于我的项目,它要求用户输入通货膨胀率和投资回报率。如果用户没有输入任何内容,则其默认值分别为3和4。然后,如果用户输入任何值,它将是值。 (如果用户输入0,它仍会发布0.我尝试了以下代码,但默认值不起作用。感谢您的时间。
<html>
<p>
<b>Expected rate of return for investment (%): </b>
<input type="number" value="<?php echo $_POST['rinvestment'];?>" min = "0" placeholder= "4" name="rinvestment" />
</p>
<p>
<b>Inflation Rate (%): </b>
<input type="number" value="<?php echo $_POST['inflation'];?>" min = "0" step = "0.1" name="inflation" placeholder= "3"/>
</p>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['rinvestment'])){
$rinvestment=$_POST['rinvestment'];
}
else {
$rinvestment = 4;
}
if (isset($_POST['inflation'])){
$inflation=$_POST['inflation'];
}
else {
$inflation = 3;
}
}
?>
答案 0 :(得分:2)
isset()
变量的目的正如顾名思义 - 检查特定变量是否已设置,即是否存在。
在您的情况下,尽管用户未设置任何值,但$rinvestment
和$inflation
变量正在发送,尽管是一个空变量。既然isset()
函数总是找到变量,它总是返回true
。这就是您的代码无效的原因。
您需要检查一个空变量以满足您的条件,即
if(!empty($inflation))
{
//set default value
}
虽然这样可以完成工作,但建议您检查isset
变量的POST
以避免错误。
答案 1 :(得分:0)
isset()
仅检查值是否已设置,值仍为空,请尝试类似
if(isset($_POST["rinvestment"]) && !empty($_POST["rinvestment"])) {
$rinvestment=$_POST['rinvestment'];
}
else {
$rinvestment = 4;
}
如果您希望用户在输入字段中使用0
并使用默认值,请使用:
if(isset($_POST["rinvestment"]) && (int) $_POST["rinvestment"] > 0) {
$rinvestment=$_POST['rinvestment'];
}
else {
$rinvestment = 4;
}