E_NOTICE:类型8 - 未定义的变量

时间:2013-11-13 05:50:30

标签: php

我是PHP的新手,我正在尝试自己学习。

我尝试使用简单的计算创建一个简单的表单,以便在我的网站上加入,但我得到了这个E_Notice。并且不知道如何在html中回显结果。

有人可以帮忙吗?

此处链接:PHPfiddle

2 个答案:

答案 0 :(得分:2)

您的代码会检查是否设置了$_POST['valor-finan'] - 如果是,则设置变量$valor_finan。如果未设置,则永远不会创建变量$valor_finan。然后,你的代码检查它是否为空 - 它不是空的,它甚至不存在。

相反,你应该将变量设置为某种东西,无论它在代码中存在的方式。如果您获得了一些$_POST数据,请使用该数据,否则提供默认值(如false)。

empty不是检查数值的最佳函数。使用is_numeric - 您的应用程序可能接受0,但empty会认为0为空。不适合进行财务计算。

此外,您正在使用不需要的全局变量。 global关键字始终是不好的做法。 switch也是不必要的。

以下是修正的代码:

$valor_finan = (
    isset($_POST['valor-finan']) ? 
    $_POST['valor-finan'] : false
);
$valor_entrada = (
    isset($_POST['valor-entrada']) ? 
    $_POST['valor-entrada'] : false
);
$numero_parcela = (
    isset($_POST['numero-parcela']) ? 
    $_POST['numero-parcela'] : false
);
function calculaFinanciamento ($valor_finan, $valor_entrada, $numero_parcela) {
    if(
        is_numeric($valor_finan) && 
        is_numeric($valor_entrada) && 
        is_numeric($numero_parcela) 
    ){
            $taxa_percent = 5;
            $valor_parcela_bruto = ($valor_finan - $valor_entrada) / $numero_parcela;
            $valor_percent = ($taxa_percent / 100) * $valor_parcela_bruto;
            $valor_parcela = $valor_parcela_bruto + $valor_percent;
            return $valor_parcela;
    } else {
        return "Por favor preencha os campos, todos são requeridos";
    }
}

echo calculaFinanciamento($valor_finan, $valor_entrada, $numero_parcela);

答案 1 :(得分:0)

您的变量valor_finan,valor_entrada,numero_parcela尚未设置。 使用isset($ valor_finan)等来检查它们是否包含已设置的记录。