Получить переменные извне, внутри функции в PHP
Я пытаюсь понять, как я могу использовать переменную, которая была установлена вне функции внутри. Есть ли способ сделать это? Я попытался установить переменную в "global", но, похоже, она не работает, как ожидалось.
Простой пример моего кода
$var = '1';
function() {
$var + 1;
return $var;
}
Я хочу это, чтобы вернуть значение 2.
Ответы
Ответ 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
?>