我怎样才能从函数内部获得价值?

时间:2011-05-21 11:09:01

标签: php echo

是否可以在函数内部获取这些值并使用函数之外的值 这是我的代码:

   <?
    function expenditure () {
    $totalexpenditure = $sum1 + $sum2;
    }
    function income () {
    totalincome = $sum1 + $sum2;
    }
    $profit = $totalincome - $totalexpenditure;
   ?>

现在我的问题是如何才能获得totalincome和toatalexpenditure的价值? 我正在学习PHP的新知识,所以请帮助我们。

3 个答案:

答案 0 :(得分:10)

<?
function expenditure ($sum1, $sum2) {
    $totalexpenditure = $sum1 + $sum2;
    return $totalexpenditure;
}

function income ($sum1, $sum2) {
    $totalincome = $sum1 + $sum2;
    return $totalincome;
}

$profit = income ($sum1, $sum2) - expenditure($sum1, $sum2) ;
?>

return statement

答案 1 :(得分:2)

你的代码错了,因为:

  • 函数中的变量没有赋值(你最好用函数参数来分配它,但另一个 - 工作但是错误的解决方案是使它们成为全局变量),
  • 在给出的示例中,$profit始终为0(零)。

解决方案有三个:

解决方案号。 1:

function expenditure ($sum1, $sum2) {
    $expenditure = $sum1 + $sum2;
    return $expenditure;
}

function income ($sum1, $sum2) {
    $income = $sum1 + $sum2;
    return $income;
}

然后你可以这样使用它:

$profit = income(10, 200) - expenditure(20,18);

解决方案号。 2:

class Finances {
    public $expenditure = 0;
    public $income = 0;
    public function addExpense($expense) {
        $this->expenditure = $this->expenditure + $expense;
        return $this;
    }
    public function addIncome($income) {
        $this->income = $this->income + $income;
        return $this;
    }
    public function getProfit() {
        return $this->income - $this->expenditure;
    }
}

然后你可以这样使用它:

$my_finances = new Finances();
$my_finances->addExpense(20)->addExpense(18)->addIncome(10)->addIncome(10);
$profit = $my_finances->getProfit();

解决方案号。 3:(避免使用!)

function expenditure() {
    global $sum1, $sum2;
    return $sum1 + $sum2;
}
function income() {
    global $sum1, $sum2;
    return $sum1 + $sum2;
}

然后你就这样使用它:

$sum1 = 10;
$sum2 = 200;
$expenditure = expenditure();
$sum1 = 20;
$sum2 = 30;
$income = income();
$profit = $income - $expenditure;

我希望你看,为什么解决方案没有。 3 是一个坏主意(因为通常使用global变量将某些东西传递给函数是个坏主意。)

答案 2 :(得分:0)

这与您可能在稍后阶段面临的另一个问题有关。如果您想在函数中传递2个变量并更改它们的值,该怎么办?

$var1 = 22;
$var2 = 15;

function multi2(&$x, &$y){
    $x = $x * 2;
    $y = $y * 2;
}

multi2($var1, $var2);
print $var1 . ", " . $var2;

您将获得此输出

44, 30

$x$y参数本身不是变量,而是传递给变量的引用(由&定义),如果您需要更改值,这将非常有用内部的外部变量。

了解更多http://php.net/manual/en/language.references.pass.php

的链接