php中的Empty和Isset函数

时间:2015-08-21 07:30:52

标签: php

我正在开展一个项目。对于我的项目,它要求用户输入通货膨胀率和投资回报率。如果用户没有输入任何内容,则其默认值分别为3和4。然后,如果用户输入任何值,它将是值。 (如果用户输入0,它仍会发布0.我尝试了以下代码,但默认值不起作用。感谢您的时间。

<html>
<p>
<b>Expected rate of return for investment (%):&nbsp;&nbsp;&nbsp;&nbsp;</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;
}
}
?>

2 个答案:

答案 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;
}