Cómo crear una función PHP con múltiples retornos

  1. PHP array para devolver múltiples valores
  2. Función PHP con retorno dinámico condicional
  3. La combinación del array PHP y la condición de retorno dinámico
  4. PHP generator para yield múltiples valores
Cómo crear una función PHP con múltiples retornos

Una función PHP es un bloque de declaraciones reutilizable, nos permite tener un retorno siendo una simple cadena, un array o un objeto JSON. Pero no es posible tener más de un retorno. Aunque, se puede usar un array, crear una declaración condicional para retornar una variable dinámica o usar generadores (para PHP 5.5 y superiores).

PHP array para devolver múltiples valores

PHP
 phpCopyfuntion arrayFunc(){
    $var1 = "return 1";
    $var2 = "return 2";
    
    return array($var1, $var2);
}

En la aplicación:

PHP
 phpCopy$result = arrayFunc();
var_dump($result);
//output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }

La función anterior puede tener múltiples retornos en forma de array, se puede acceder a ella utilizando:

PHP
 phpCopy$result = arrayFunc();
echo $result[0]; // return 1
echo $result[1]; // return 2

Desde PHP 7.1, hay una nueva función llamada destructuring para las listas. Significa que es posible hacer cosas como:

PHP
 phpCopy$array = ['dog', 'cat', 'horse', 'fish'];
[$q, $w, $e, $r] = $array;

echo $q; // output: dog
echo $w; // output: cat

Aplicar en una función se vería así:

PHP
 phpCopyfunction descructingFunction(){
    return ['A', 'sample', 'descructing', 'function'];
}
[$a, $b, $c, $d] = descructingFunction();

echo $a; //output: A
echo $d; // output: function

Función PHP con retorno dinámico condicional

PHP
 phpCopyfunction condFunc($x = true){
    $ret1 = "One";
    $ret2 = "Two";
    
    if($x == true){
        return $ret1;
    }else{
        return $ret2;
    }
}

En la aplicación:

PHP
 phpCopyecho condFunc(true);
//output: One

Al tomar este enfoque, no necesita devolver múltiples valores. Por lo tanto, la función se encargará de la condición de filtrar el valor correcto necesario.

La combinación del array PHP y la condición de retorno dinámico

Modificando un poco la función se puede tener la opción de devolver un array o un retorno dinámico.

Ejemplo:

PHP
 phpCopyfunction combination($x = true){
    $ret1 = "One";
    $ret2 = "Two";
    
    if($x === true){
        return $ret2;
    }
    if($x == "both"){
        return array($ret1, $ret2);
    }   
}

echo combination(); //output: Two
var_dump(combination("both")) //output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }

Usar este enfoque permitirá que la función sea más flexible.

PHP generator para yield múltiples valores

Una función generator no devuelve un valor, sino que produce tantos valores como sean necesarios. Devuelve un objeto que puede ser iterado.

Ejemplo:

PHP
 phpCopyfunction multipleValues(){
    yield "return 1";
    yield "return 2";
}

$return = multipleValues();
foreach($return as $ret){
    echo $ret; //$ret first value is "return 1" then "return 2"
}

Nota: La palabra clave de un generator es yield. Actúa como un return a una declaración de función, pero no detiene la ejecución y retorna, sino que proporciona valor a los bucles de código.

Precaución: Cuando se usa yield como expresión, debe estar rodeada de paréntesis.

Ejemplo:

PHP
 phpCopy$generator = (yield $test);
¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete

Artículo relacionado - PHP Function