你的代码是错误的,因为:
- 职权范围内的变量没有指定值(你应该通过函数参数中最好给它分配的,但另一个 - 工作,但错误 - 解决方案使它们成为全局变量),
- 在给出的示例中,
$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
变量将某些东西传递给函数是个坏主意)。
我必须失去了一些东西,你为什么不只是返回从功能上totalincome和totalexpenditure? – sverre 2011-05-21 11:13:16
你是否知道你的功能:1)你将有'$ profit'等于零,除非2)不将值赋给'$ sum1'和'$ sum2',而不会让它们成为'global'将会产生另一个问题? – Tadeck 2011-05-21 11:58:07
请你可以选择第二个答案作为答案? – dynamic 2011-06-15 12:31:17