你的代碼是錯誤的,因爲:
- 職權範圍內的變量沒有指定值(你應該通過函數參數中最好給它分配的,但另一個 - 工作,但錯誤 - 解決方案使它們成爲全局變量),
- 在給出的示例中,
$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