gpt4 book ai didi

PHP 函数不返回任何值

转载 作者:行者123 更新时间:2023-11-29 06:37:22 25 4
gpt4 key购买 nike

我是 PHP 的新手,现在正在检查该函数是如何工作的。我在 futurevalue.php 中有 3 个函数,正在从 display_results.php 调用。

我想使用我的函数获得结果: 1. future_value 会返回future value的计算值 2. currency_formatting 将返回 2 个带有 $ 符号的值:$investment_f, $future_value_f 3. percent_formatting 将返回带有百分号的值$yearly_rate_f

目前,display_results.php 没有返回任何值,我也想知道我的函数调用是否正确。

感谢您的友好回应。

future 值(value).php

<?php

namespace murach\futurevalue{

// Calculate the future value
if(!function_exists('future_value')){
function future_value($investment,$years, $yearly_rate) {
global $future_value;
$future_value = $investment;;


if (isset($_POST['compound_monthly'])) {
// compound monthly
$compounded_monthly = 'Yes';
$months = $years * 12;
$monthly_rate = $yearly_rate / 12;
for ($i = 1; $i <= $months; $i++) {
$future_value = $future_value + ($future_value * $monthly_rate *.01);
}
} else {
// compound yearly
$compounded_monthly = 'No';
for ($i = 1; $i <= $years; $i++) {
$future_value = $future_value + ($future_value * $yearly_rate *.01);
}
}

return $future_value;
}
}
//Function for currency formatting
if(!function_exists('currency_formatting')){
function currency_formatting($investment, $future_value) {
if(isset( $investment_f)){
$investment_f = '$'.number_format($investment, 2);
// return $investment_f;


$future_value_f = '$'.number_format($future_value, 2);
return array($investment_f, $future_value_f);
}
}
}

//Function for percent formatting
if(!function_exists('percent_formatting')){
function percent_formatting( $yearly_rate) {
if(isset( $yearly_rate_f)){

$yearly_rate_f = $yearly_rate.'%';
return $yearly_rate_f;
}
}
}
}
?>

显示结果.php

<?php
require('C:\xampp\htdocs\ex_solutions\ch07_en7-1\futurevalue.php');

// get the data from the form
if(isset($_POST['investment'])) {
$investment = $_POST['investment'];
}

if(isset($_POST['interest_rate'])) {
$yearly_rate = $_POST['interest_rate'];
}

if(isset($_POST['years'])) {
$years = $_POST['years'];
}
if (isset($_POST['compounded_monthly'])){
$compounded_monthly = $_POST['compound_monthly'];
}


// validate investment entry
if ( empty($investment) ) {
$error_message = 'Investment is a required field.';
} else if ( !is_numeric($investment) ) {
$error_message = 'Investment must be a valid number.';
} else if ( $investment <= 0 ) {
$error_message = 'Investment must be greater than zero.';
// validate interest rate entry
} else if ( empty($yearly_rate) ) {
$error_message = 'Interest rate is a required field.';
} else if ( !is_numeric($yearly_rate) ) {
$error_message = 'Interest rate must be a valid number.';
} else if ( $yearly_rate <= 0 ) {
$error_message = 'Interest rate must be greater than zero.';
// set error message to empty string if no invalid entries
} else {
$error_message = '';
}

// if an error message exists, go to the index page
if ($error_message != '') {
include('index.php');
exit();
}

require_once('C:/xampp/htdocs/ex_solutions/ch07_en7-1/futurevalue.php');
$future_value = murach\futurevalue\future_value($investment, $yearly_rate, $years);


require_once('C:\xampp\htdocs\ex_solutions\ch07_en7-1\futurevalue.php');
$investment_f = murach\futurevalue\currency_formatting($investment, $future_value);

require_once('C:\xampp\htdocs\ex_solutions\ch07_en7-1\futurevalue.php');
$future_value_f = murach\futurevalue\currency_formatting($investment, $future_value);

require_once('C:\xampp\htdocs\ex_solutions\ch07_en7-1\futurevalue.php');
$yearly_rate_f = murach\futurevalue\percent_formatting( $yearly_rate);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Future Value Calculator</title>
<link rel="stylesheet" type="text/css" href="main.css"/>
</head>
<body>
<div id="content">
<h1>Future Value Calculator</h1>

<label>Investment Amount:</label>
<span><?php echo $investment_f; ?></span><br />

<label>Yearly Interest Rate:</label>
<span><?php echo $yearly_rate_f; ?></span><br />


<label>Number of Years:</label>
<span><?php echo $years; ?></span><br />

<label>Future Value:</label>
<span><?php echo $future_value_f; ?></span><br />


<label>Compound Monthly:</label>
<span><?php murach\futurevalue\future_value($compounded_monthly); ?></span><br />


</div>
</body>
</html>

最佳答案

你有多个逻辑问题

a) require_once() 重复多次,但总是需要同一个文件。这是没有意义的。 require_once()include_once() 将加载指定的 ONCE,然后尝试再次加载同一文件成为空操作。

b) 你有这个:

function currency_formatting($investment, $future_value) {
if(isset( $investment_f)){
^^^^^^^^^^^^---- undefined variable

由于 $investment_f 是未定义的,您永远不会到达 number_format()return 调用,因此您的函数只是从底部掉下来并且什么都不返回。一个什么都不返回的函数将是一个隐式的 null 值:

function foo() {
// do nothing
}

$bar = foo(); // $bar becomes null

c) 您正在对数值使用 empty() 测试。 empty(0) 恰好为 TRUE,因此如果这是计算 0% APR 汽车贷款的贷款,您将进入无效代码路径。

关于PHP 函数不返回任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23703422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com