Devolver valores

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.

Empleo de return

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 (
012);
}
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.

Declaraciones de tipo de devolución

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.

A partir de PHP 7.1.0, los valores de retorno pueden ser marcados como anulables anteponiendo el prefijo nombre de tipo con un signo de interrogación (?). Esto significa que la función devuelve el tipo especificado o NULL.

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.

Ejemplos

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(12));
?>

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(12));
var_dump(sum(12.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 {}

function 
getC(): {
    return new 
C;
}

var_dump(getC());
?>

El resultado del ejemplo sería:

object(C)#1 (0) {
}

Ejemplo #7 Declaración de tipo de retorno anulable (a partir de PHP 7.1.0)

<?php
function get_item(): ?string {
    if (isset(
$_GET['item'])) {
        return 
$_GET['item'];
    } else {
        return 
null;
    }
}
?>