Я хотел бы превратить мой, если() условно для переключения() из этого:If() vs. 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']`? Действительно ли это логическое значение, или существует какая-то строка или целое число, которое неявно выбрано для bool в версии `if`? – NOtherDev 2010-12-02 20:17:48
Конкретное программирование (PHP?), Которое вы используете, может быть важно здесь; а также описание того, как он ведет себя по-другому (может ли «разрыв», который был добавлен в цикл «foreach», будет изменяться в ожидаемом поведении?). – 2010-12-02 20:33:43