J'ai une méthode qui utilise des blocs de cas de commutation similaires à ceux du code ci-dessous:
switch ($totalMonthsFromImmigration) { case $totalMonthsFromImmigration <= 18: $this->clauses->put('immigrant_1', $this->clauses->get('immigrant')); $this->clauses->put('immigrant_2', null); $this->clauses->put('immigrant_3', null); break; case $totalMonthsFromImmigration <= 30: $this->clauses->put('immigrant_1', null); $this->clauses->put('immigrant_2', $this->clauses->get('immigrant')); $this->clauses->put('immigrant_3', null); break; case $totalMonthsFromImmigration <= 42: $this->clauses->put('immigrant_1', null); $this->clauses->put('immigrant_2', null); $this->clauses->put('immigrant_3', $this->clauses->get('immigrant')); break; }
5 Réponses :
Essayez de définir la valeur par défaut, puis ajoutez de la valeur en fonction de la condition
Une autre façon de le faire, essayez if ($totalMonthsFromImmigration <= 18){
$this->clauses->put('immigrant_1', $this->clauses->get('immigrant'));
} else if ($totalMonthsFromImmigration <= 30) {
$this->clauses->put('immigrant_2', $this->clauses->get('immigrant'));
else if ($totalMonthsFromImmigration <= 42) {
$this->clauses->put('immigrant_3', $this->clauses->get('immigrant'));
}
Si vous appelez deux fois le setter pour les valeurs par défaut telles que @Jignesh JOISAR n'est pas souhaitée:
$this->clauses->put('immigrant_1', ($totalMonthsFromImmigration <= 18) ? $this->clauses->get('immigrant') : null); $this->clauses->put('immigrant_2', ($totalMonthsFromImmigration > 18 && $totalMonthsFromImmigration <= 30) ? $this->clauses->get('immigrant') : null); $this->clauses->put('immigrant_3', ($totalMonthsFromImmigration > 30 && $totalMonthsFromImmigration <= 42) ? $this->clauses->get('immigrant') : null);
Je pensais qu'il y a une formule mathématique au lieu d'utiliser un étui de commutation ou si sinon. Mais je n'en ai pas trouvé un. C'est ma solution basée sur les réponses que j'ai connues ici:
$this->clauses->put('immigrant_1', null); $this->clauses->put('immigrant_2', null); $this->clauses->put('immigrant_3', null); if ($totalMonthsFromImmigration <= 18) { $this->clauses->put('immigrant_1', $this->clauses->get('immigrant')); } else if ($totalMonthsFromImmigration <= 30) { $this->clauses->put('immigrant_2', $this->clauses->get('immigrant')); } else if ($totalMonthsFromImmigration <= 42) { $this->clauses->put('immigrant_3', $this->clauses->get('immigrant')); }
switch ($totalMonthsFromImmigration) { case $totalMonthsFromImmigration <= 42: $this->clauses->put('immigrant_1', $this->clauses->get('immigrant')); $this->clauses->put('immigrant_2', null); $this->clauses->put('immigrant_3', null); break; default: echo "Your logic you want greeter then 42" }
Pourquoi ne pas définir les trois à NULL initialement, alors générez simplement la chaîne
'Immigrant_ [x]' code> dans le commutateur pour définir le bon?
Notez que
Switch ($ FOO) Case $ FOO Ne fonctionne pas comme vous le pensez. Si vous avez besoin de comparaisons non égales, vous devez utiliser
si..else si..else code>, pas
interrupteur code>.
@Deceze merci! Je vais changer ça.