Ваш код неверен, потому что:
- переменным внутри функций не назначено значение (его следует назначать предпочтительно параметрами функции, но другое - работающее, но неправильное - решение превращает их в глобальные переменные),
- в данном примере
$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
переменных для передачи чего-либо в функцию - плохая идея).