Usamos principalmente parâmetros de função para obter dados externos dentro de uma função para processamento adicional. Da mesma forma, retornamos valores de uma função PHP para obter acesso aos dados processados fora da função. Você pode definir funções em PHP com ou sem um valor de retorno.
Embora uma função no PHP possa ter vários parâmetros, não é possível que ela tenha várias instruções de retorno. Neste tutorial, mostraremos como retornar vários valores de uma função em PHP.
Declarações de retorno em PHP
Funções em PHP podem ter um opcional return
demonstração. Quando chamado de dentro de uma função, uma instrução return imediatamente interrompe a execução de qualquer código adicional. Isso também inclui outras declarações de retorno. Aqui está um exemplo:
Duas coisas que você notará aqui são que a execução do código acima não ecoa a declaração sobre o valor de $y
. Isso ocorre porque a função interrompe a execução após a primeira instrução de retorno. Se você descomentar a linha onde usamos list()
para atribuir valores de variáveis, tanto $m
e $n
vai ser NULL
Porque list()
só funciona com arrays e a função está retornando apenas um número.
Usando uma matriz para retornar vários valores
Sabemos que uma instrução return pode retornar qualquer tipo de valor. Portanto, também podemos usá-lo para retornar um array que conterá todos os valores que realmente queremos retornar. Podemos reescrever o exemplo acima da seguinte forma para retornar vários valores:
Da perspectiva do PHP, você ainda está retornando um único valor, mas esse valor único é um array que pode conter vários outros valores. Essa é uma das maneiras mais fáceis em PHP de simular o retorno de vários valores por uma função.
Estamos retornando apenas dois valores no exemplo acima. No entanto, as coisas podem ficar um pouco complicadas quando um número maior de valores está envolvido porque você precisa manter a ordem correta dos valores retornados em mente.
A partir do PHP 7.1, você pode usar list()
com matrizes associativas. Isso significa que a ordem na qual você retorna os elementos não afetará os valores atribuídos. Aqui está um exemplo:
$x, 'n' => $y]; } list('m' => $m, 'n' => $n) = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; list('n' => $n, 'm' => $m) = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
Você pode ver que as variáveis $m
e $n
obter os mesmos valores em ambos os casos porque os valores agora estão sendo atribuídos com base em chaves em vez de índices numéricos.
Você nem precisa usar list()
do PHP 7.1 em diante porque o PHP agora suporta sintaxe de desestruturação. Poderíamos reescrever o exemplo anterior como:
$x, 'n' => $y]; } ['m' => $m, 'n' => $n] = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ['n' => $n, 'm' => $m] = multiple_returns(5, 18); // Values are: 10 and 54 echo "Values are: ".$m." and ".$n; ?>
Usando um objeto para retornar vários valores
Outra maneira de retornar vários valores de uma função PHP é retornar um objeto. Podemos definir uma classe com propriedades diferentes usando variáveis de membro público. Uma desvantagem dessa técnica é que você terá que escrever mais código e consumirá mais memória para armazenar várias instâncias da classe. A vantagem é que você poderá usar o mesmo conjunto de variáveis em vários lugares.
m = 2*$a; $my_values->n = 3*$b; return $my_values; } $values = multiple_returns_class(5, 18); // Values are: 10 and 54 echo "Values are: ".$values->m." and ".$values->n; ?>
Como você pode ver, conseguimos obter vários valores da função com sucesso simplesmente criando um objeto e atribuindo os valores às suas várias propriedades.
Pensamentos finais
Neste tutorial, aprendemos que o PHP não permite retornar vários valores diretamente de uma função. No entanto, você pode contornar essa limitação empacotando vários valores como uma matriz ou um objeto. Depois disso, basta retornar o array ou objeto da função e acessar os valores posteriormente.
Originally posted 2022-05-22 01:42:44.