Crea una funzione PHP con più ritorni

  1. Array PHP per restituire più valori
  2. Funzione PHP con ritorno dinamico condizionale
  3. Combinazione di PHP Array e ritorno dinamico condizionale
  4. PHP generator per yield valori multipli

Una funzione PHP è un blocco di istruzioni riutilizzabile, ci consente di avere un ritorno come una semplice stringa, un array o un oggetto JSON. Ma non è possibile avere più di un reso. Sebbene sia possibile utilizzare un array, creare un’istruzione condizionale per restituire una variabile dinamica o utilizzare i generatori (per PHP 5.5 e versioni successive).

Array PHP per restituire più valori

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

In applicazione:

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

La funzione sopra può avere più ritorni sotto forma di un array, è possibile accedervi utilizzando:

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

A partire da PHP 7.1, c’è una nuova funzione chiamata destructuring per le liste. Significa che è possibile fare cose come:

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

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

L’applicazione in una funzione sarebbe simile a questa:

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

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

Funzione PHP con ritorno dinamico condizionale

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

In applicazione:

echo condFunc(true);
//output: One

Adottando questo approccio, non è necessario restituire più valori. Pertanto, la funzione gestirà la condizione per filtrare il valore corretto necessario.

Combinazione di PHP Array e ritorno dinamico condizionale

Modificando leggermente la funzione si può avere la possibilità di restituire un array o un ritorno dinamico.

Esempio:

function 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" }

L’utilizzo di questo approccio consentirà alla funzione di essere più flessibile.

PHP generator per yield valori multipli

Una funzione generator non restituisce un valore, ma fornisce tutti i valori necessari. Restituisce un oggetto che può essere iterato.

Esempio:

function 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 parola chiave di un generator è yield. Agisce come un return a un’istruzione di funzione, ma non interrompe l’esecuzione e il ritorno, fornisce valore ai cicli di codice.

Attenzione: Quando si utilizza yield come espressione, deve essere racchiuso tra parentesi.

Esempio:

$generator = (yield $test);

Articolo correlato - PHP Function

  • Formatta correttamente un numero con zeri iniziali in PHP