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

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

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

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

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

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

Вам нужно будет использовать ключевое слово 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? } 

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

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

 class Counter { private $var = 1; public function increment() { $this->var++; return $this->var; } } $counter = new Counter(); $newvalue = $counter->increment(); 
 $var = 1; function() { global $var; $var += 1; return $var; } 

ИЛИ

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

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

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

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

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

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