Los valores son devueltos usando la sentencia opcional return. Se puede devolver cualquier tipo, incluidos arrays y objetos. Esto causa que la función finalice su ejecución inmediatamente y pase el control de nuevo a la línea desde la que fue llamada. Véase return para más información.
Nota:
Si se omite return, el valor devuelto será
NULL
.
Ejemplo #1 Empleo de return
<?php
function cuadrado($núm)
{
return $núm * $núm;
}
echo cuadrado(4); // imprime '16'.
?>
Una función no puede devolver múltiples valores, pero se pueden obtener resultados similares devolviendo un array.
Ejemplo #2 Devolver un array para obtener múltiples valores
<?php
function números_pequeños()
{
return array (0, 1, 2);
}
list ($cero, $uno, $dos) = números_pequeños();
?>
Para devolver una referencia desde una función use el operador de referencia &, en la declaración de la función y cuando se asigne el valor devuelto a una variable:
Ejemplo #3 Devolver una referencia desde una función
<?php
function &devolver_referencia()
{
return $algunaref;
}
$nuevaref =& devolver_referencia();
?>
Para más información sobre referencias, por favor, lea las Referencias explicadas.
PHP 7 añade soporte para las declaraciones de tipo de devolución. De forma similar a las declaraciones de tipo de argumento, las declaraciones de tipo de devolución especifican el tipo del valor que serán devuelto desde una función. Están disponibles los mismos tipos para las declaraciones de tipo de devolución que para las declaraciones de tipo de argumento.
La tipificación estricta también tiene efecto sobre las declaraciones de tipo de devolución. En el modo predeterminado de tipificacón débil, los valores devueltos serán forzados al tipo correcto si no son ya de ese tipo. En el modo fuerte, el valor devuelto debe ser del tipo correcto, o de lo contrario se lanzará una excepción TypeError.
Nota:
Al sobrescribir un método padre, el método hijo debe hacer coincidir cualquier declaración de tipo de devolución del padre. Si el padre no define un tipo de devolución, el método hijo puede hacerlo.
Ejemplo #4 Declaración básica de tipo de devolución
<?php
function sum($a, $b): float {
return $a + $b;
}
// Observe que será devuelto un float.
var_dump(sum(1, 2));
?>
El resultado del ejemplo sería:
float(3)
Ejemplo #5 El modo estricto en acción
<?php
declare(strict_types=1);
function sum($a, $b): int {
return $a + $b;
}
var_dump(sum(1, 2));
var_dump(sum(1, 2.5));
?>
El resultado del ejemplo sería:
int(3) Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5 Stack trace: #0 -(9): sum(1, 2.5) #1 {main} thrown in - on line 5
Ejemplo #6 Devolver un objeto
<?php
class C {}
function getC(): C {
return new C;
}
var_dump(getC());
?>
El resultado del ejemplo sería:
object(C)#1 (0) { }