Crea una funzione PHP con più ritorni
- Array PHP per restituire più valori
- Funzione PHP con ritorno dinamico condizionale
- Combinazione di PHP Array e ritorno dinamico condizionale
-
PHP
generator
peryield
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);