Php 注意:类型8——未定义变量

Php 注意:类型8——未定义变量,php,Php,我对PHP非常陌生,我正在努力自学 我试图创建一个简单的表单,并在我的网站上加入一个简单的计算,但我收到了这个E_通知。也不知道如何在html中回显结果 有人能帮忙吗 此处链接:尚未设置变量valor\u finan、valor\u entrada、numero\u parcela。 使用isset($valor\u finan)等检查它们是否包含记录/是否已设置。您的代码检查是否设置了$\u POST['valor-finan'],如果设置了,则设置变量$valor\u finan。如果未设置

我对PHP非常陌生,我正在努力自学

我试图创建一个简单的表单,并在我的网站上加入一个简单的计算,但我收到了这个E_通知。也不知道如何在html中回显结果

有人能帮忙吗


此处链接:

尚未设置变量valor\u finan、valor\u entrada、numero\u parcela。
使用isset($valor\u finan)等检查它们是否包含记录/是否已设置。

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

相反,您应该将变量设置为无论如何都存在于代码中的某个值。如果您得到一些
$\u POST
数据,请使用该数据,否则请提供一个类似false的默认值

empty
不是检查数值的最佳函数。使用<代码> ISO数字< /代码> - 0可能对您的应用程序是可接受的,但是<代码>空< /代码>将考虑0…空的不适合财务计算

另外,您正在使用不需要的globals。
global
关键字总是不好的做法。
开关
也是不必要的

以下是您的代码,并进行了相应的更正:

$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);

@外星人先生?在链接上运行F9,表单会对其进行解释。我建议您在此处共享代码以及带有行号的实际警告/错误,好像链接将失效,您的问题对未来的访问者不再有用。您可以在提交表单之前,在显示表单时提出此通知。由于GET请求时,
$\u POST
是空的,并且您没有包含适当的检查(谷歌很容易找到)。很抱歉再次打扰您,但是为什么我不能在没有这些错误的情况下调用反HTML标记内的echo@卡罗尔也有同样的问题。脚本从上到下执行。因此,建立变量的代码还没有运行。通常,php代码位于文件的顶部,至少是处理从POST或GET获取数据的部分。@Carol我更新了示例代码,向您展示了正确的方法。再次感谢您。这些问题对你们来说太傻了,但对我来说有点难。。然而,我希望……)@卡罗尔,呸!我从12年前的一本书开始学习PHP,我无法忍受读我2年前写的代码。每个人都应该不断地学习,如果有人认为自己无所不知,那么他们只会表现出自己的无知。再次祝你好运:)