Obtenha variables ​​de fora, dentro de uma function em PHP

Estou tentando descobrir como eu posso usar uma variável, que foi definida fora de uma function, dentro. Existe alguma maneira de fazer isso? Tentei definir a variável como “global”, mas não parece funcionar como esperado.

Um exemplo simples do meu código

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

Eu quero isso, devolver o valor de 2.

Você precisará usar a palavra-chave global dentro de sua function. http://php.net/manual/en/language.variables.scope.php

EDITAR (com vergonha, negligenciei isso, graças aos comentaristas)

… e armazene o resultado em algum lugar

 $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? } 

Globals vai fazer o truque, mas geralmente são bons para se manter longe. Em programas maiores, você não pode ter certeza de haver comportamento porque eles podem ser alterados em qualquer lugar do programa inteiro. E o código de teste que usa globals torna-se muito difícil.

Uma alternativa é usar uma class.

 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; } 

OU

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

Consulte http://php.net/manual/en/language.variables.scope.php para obter documentação. Eu acho que no seu caso específico você não estava obtendo resultados que deseja, porque você não está atribuindo a operação $var + 1 a qualquer coisa. A matemática é realizada, e depois jogada fora, essencialmente. Veja abaixo um exemplo de trabalho:

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

Esta linha na sua function: $var + 1 não alterará o valor atribuído a $var , mesmo se você usar a palavra-chave global.

Qualquer um destes irá funcionar, no entanto: $var = $var + 1; ou $var += 1;

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