Как я могу получить значение изнутри функции? - PullRequest
0 голосов
/ 21 мая 2011

Можно ли получить эти значения внутри функции и использовать их вне функции? Вот мой код:

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

Теперь мой вопрос: как я могу получить значение totalincome и toatalexpenditure?Я учу php Алоса нового в php, поэтому, пожалуйста, помогите мне, ребята.

Ответы [ 3 ]

10 голосов
/ 21 мая 2011
<?
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) ;
?>

отчет о возврате

2 голосов
/ 21 мая 2011

Ваш код неверен, потому что:

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

0 голосов
/ 21 мая 2011

Это относится к другой проблеме, с которой вы можете столкнуться на более позднем этапе.Что, если вы хотите передать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...