Подтвердить что ты не робот

Получить переменные извне, внутри функции в PHP

Я пытаюсь понять, как я могу использовать переменную, которая была установлена ​​вне функции внутри. Есть ли способ сделать это? Я попытался установить переменную в "global", но, похоже, она не работает, как ожидалось.

Простой пример моего кода

$var = '1';

function() {
$var + 1;
return $var;
}

Я хочу это, чтобы вернуть значение 2.

4b9b3361

Ответ 1

Вам нужно использовать ключевое слово global внутри вашей функции. http://php.net/manual/en/language.variables.scope.php

EDIT (смущенный, я пропустил это, благодаря комментаторам)

... и сохраните результат где-нибудь

$var = '1';
function() {
    global $var;
    $var += 1;   //are you sure you want to both change the value of $var
    return $var; //and return the value?
}

Ответ 2

Глобалы будут делать трюк, но, как правило, хорошо держаться подальше. В более крупных программах вы не можете быть уверены в этом, потому что их можно изменить где угодно во всей программе. И тестовый код, который использует глобальные переменные, становится очень тяжелым.

Альтернативой является использование класса.

class Counter {
    private $var = 1;

    public function increment() {
        $this->var++;
        return $this->var;
    }
}

$counter = new Counter();
$newvalue = $counter->increment();

Ответ 3

$var = 1;

function() {
  global $var;

  $var += 1;
  return $var;
}

ИЛИ

$var = 1;

function() {
  $GLOBALS['var'] += 1;
  return $GLOBALS['var'];
}

Ответ 4

См. http://php.net/manual/en/language.variables.scope.php для документации. Я думаю, что в вашем конкретном случае вы не получали желаемых результатов, потому что вы не назначали операцию $var + 1 ни на что. Математика выполняется, а затем отбрасывается, по существу. Ниже приведен рабочий пример:

$var = '1';

function addOne() {
   global $var;
   $var = $var + 1;
   return $var;
}

Ответ 5

Эта строка в вашей функции: $var + 1 не изменит значение, присвоенное $var, даже если вы используете ключевое слово global.

Однако все из них будут работать: $var = $var + 1; или $var += 1;

Ответ 6

$var = '1';
function addOne() use($var) {
   return $var + 1;
}

Ответ 7

<?php
$var = '1';
function x ($var) {
return $var + 1;
}
echo x($var); //2
?>