Question fonction PHP et return

Fermé
playboy-1990 Messages postés 458 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 10 septembre 2016 - 22 mai 2011 à 01:06
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 24 mai 2011 à 17:28
Bonjour,
J'ai entendus dire que si la commande return est appelé dans une fonction elle arrête la fonction.
Donc je me demande si cette fonction est correcte :
<?php
function test($letest='') {
if(!empty($letest)) {
    return $letest;
    return true;
    } else {
    return false;
    }
}
?>

Merci d'avance dans l'attente d'une réponse ;)


3 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
22 mai 2011 à 01:15
Salut,

Avec une meilleure indentation :
<?php
function test($letest='') {
    if(!empty($letest)) {
        return $letest;
        return true;
    } else {
        return false;
    }
}


Si la chaine n'est pas vide, ta fonction retourne la chaine.
Je suppose que le but est de retourner true ou false, donc il faut supprimer la ligne :
return $letest;
0
playboy-1990 Messages postés 458 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 10 septembre 2016 273
24 mai 2011 à 15:48
Merci mais je voudrais faire que si la fonction retourne true, alors elle retourne également la chaîne
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
24 mai 2011 à 17:27
Une fonction ne peut retourner qu'une valeur.
La solution est donc de retourner false ou bien la chaine.

Et une chaine qui n'est pas vide est égale à true.
Donc :
<?php
function test($letest='') {
    if(!empty($letest)) {
        return $letest;
    } else {
        return false;
    }
}

$chaine = '...';

if(test($chaine) == true) {
    echo 'Pas vide';
} else {
    echo 'Vide';
}
?>
0
Lambo31 Messages postés 23 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 5 octobre 2011
24 mai 2011 à 16:18
bonjour, essaye
return true . $letest;
Car dans ton code le second return ne sera jamais pris en compte.
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
24 mai 2011 à 17:28
Tu mélanges deux type : un booléen et une chaine.
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 24/05/2011 à 16:55
Sinon tu peut essayer les "références" (https://www.php.net/manual/fr/language.references.pass.php )

ex:
$a=1   

function test(&$letest)    
{   
    if(!empty($letest))    
    {   
        $letest++;   
        return true;   
    }    
    else    
    {   
        return false;   
    }   
}   

test($a)   
echo $a //affiche 2   


D'ailleurs dans ta fonction function test($letest='') fait que $letest ne sera jamais vide, vu que tu lui asigne une valeur par défaut...
0