Condition en fonction d'un tableau

Par Nicwalle, il y a 10 ans


Bonjour à tous,

J'aimerais avoir votre aide afin de faire une condition en fonction d'un tableau. Je m'explique:

J'ai ici une fonction isEqual qui prend 2 paramètres:

public function isEqual($field, $mustBe){ if($field != $mustBe){ //Affichage d'un message d'erreur } }

J'aimerais améliorer ce code en pouvant mettre un tableau dans la variable $mustBe. Par exemple, j'aimerais que si j'appelle la fonction comme ceci:

$form->isEqual('gender',['homme','femme']);

J'ai ça comme résultat:

public function isEqual($field, $mustBe){ if(is_array($mustBe)){ if($field != "homme" || $field != "femme"){ //Affichage du message d'erreur } }else{ if($field != $mustBe){ //Affichage d'un message d'erreur } } }

Mon problème est donc au niveau de la gestion du tableau.

Merci d'avance,

Nicwalle

3 réponses

Anthoo, il y a 10 ans

Comme toujours il y a plusieurs façons de faire. Pour commencer, il va te falloir parcourir le tableau, et tester chaque occurence avec $field. Si à un moment, la condition dit que l'occurence courante est égale à $field, alors tu retourne true. Sinon, la boucle va aller jusqu'au bout, et la fonction va retourner false par défaut.

public function isEqual($field, $mustBe) { // on va traiter systématiquement $mustBe comme un array pour que ce soit plus simple $mustBe = is_array($mustBe) ? $mustBe : [$mustBe]; foreach ($mustBe as $value) { if ($value === $field) return true; } return false; }
Nicwalle, il y a 10 ans

Bonjour, merci pour la réponse mais mon but est de voir s'il est différent de "Homme" ou de "Femme"... Dans ce cas ci, si l'utilisateur choisit homme, homme renverra true mais femme renverra false :(
J'espère que tu vois ce que je veux dire, je ne suis pas sur d'être très clair

bugland, il y a 10 ans

Salut voila ce que je te propose je sais pas si cela va répondre à la question :

public function isEqual($field, $mustBe){ if(is_array($mustBe)){ //on regarde si la valeur est dans le tableau si non existante on renvoi une erreur if (!in_array($field, $mustBe)){ return 'erreur'; } } else{ if($field != $mustBe){ //Affichage d'un message d'erreur return 'erreur'; } } }