Je voudrais transformer mon cas() sous condition de changer() de ceci:If() vs switch() - Même signification mais comportement différent?
if($configuration['application'][$applicationName]['subdomain'] == true){
foreach($configuration['language'] as $language){
if($language['abbreviation'].'.'.$configuration['application'][$applicationName]['domain'] == $_SERVER['HTTP_HOST']){
$_SESSION['language'] = $language['abbreviation'];
}
}
// If no subdomain detected and redirection is enabled, set default language
if(!isset($_SESSION['language'])){
$_SESSION['language'] = $configuration['application'][$applicationName]['language'];
}
}
else {
$_SESSION['language'] = $configuration['application'][$applicationName]['language'];
}
à ceci:
switch($configuration['application'][$applicationName]['subdomain']){
case true:
foreach($configuration['language'] as $language){
if($language['abbreviation'].'.'.$configuration['application'][$applicationName]['domain'] == $_SERVER['HTTP_HOST']){
$_SESSION['language'] = $language['abbreviation'];
break;
}
}
default:
$_SESSION['language'] = $configuration['application'][$applicationName]['language'];
break;
}
Je pense que ce devrait être la même, mais il se comporte différemment ... Le commutateur ne fonctionne pas correctement ...
Quel type de données est stocké dans '$ configuration ['application'] [$ applicationName] ['subdomain']'? Est-ce vraiment booléen, ou il y a une sorte de chaîne ou un entier, qui est implicitement casté en bool dans la version 'if'? – NOtherDev
La programmation spécifique (PHP?) Que vous utilisez peut être importante ici; aussi une description de la façon dont il se comporte différemment (le 'break' qui a été ajouté à la boucle' foreach' pourrait-il changer votre comportement attendu?). –
Eh bien j'utilise php et $ configuration ['application'] [$ applicationName] ['subdomain'] est booléen (il est lu à partir de .ini et typecasted à bool) ... Et la chose est que le code dans foreach est executé et default est aussi exécuté (break ne casse pas vraiment le switch?) – jzvelc