If()vs switch() - 同じ意味ですが異なる動作ですか?
私はif()条件をswitch()から次のように変更したいと思っています: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'];
}
これまで:
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;
}
私は同じであるべきだと思いますが...スイッチが正しく動作していない...
'$ configuration ['application'] [$ applicationName] ['subdomain']'にはどのような種類のデータが格納されていますか?それは本当にブールか、あるいは 'if'バージョンで暗黙のうちにboolにキャストされる何らかの文字列か整数がありますか? – NOtherDev
ここでは、使用している特定のプログラミング(PHP?)が重要な場合があります。 (foreachループに追加された 'break 'が期待された振る舞いの変化を引き起こす可能性がありますか?) –
さて、私はphpと$ configuration ['application'] [$ applicationName] ['subdomain']をブーリアン(これは.iniから読み込み、boolに型キャストします)を使用しています...そして、事はforeachのコードは – jzvelc