PHP中的条件条件
我的项目可以在语言之间切换。这些项目存储在数据库中,并在数据库中使用$_GET['lang']返回正确的项目。目前,只使用英语和法语,因此它适用于以下代码:PHP中的条件条件,php,Php,我的项目可以在语言之间切换。这些项目存储在数据库中,并在数据库中使用$_GET['lang']返回正确的项目。目前,只使用英语和法语,因此它适用于以下代码: if ($_GET['lang'] == 'fr' OR ($_GET['lang'] == 'en')) { $header = getTranslation('header', $_GET['lang']); $footer = getTranslation('footer', $_GET['lang']); } els
if ($_GET['lang'] == 'fr' OR ($_GET['lang'] == 'en')) {
$header = getTranslation('header', $_GET['lang']);
$footer = getTranslation('footer', $_GET['lang']);
} else {
header('Location: error.php');
}
我正在寻找的是一些方法,以备在db中添加语言时使用。下面的代码接近我需要的(显然不起作用)
有没有办法创建一个代码,根据数据库中语言的数量生成多个if条件?您应该将else部分移出循环,否则您将始终在循环迭代的某个点执行它。只有当您迭代了所有的可能性,但仍然没有匹配项时,才能确保必须导航到语言页面:
$header = null;
while ($translations = $languagesList->fetch()) {
if ($_GET['lang'] == $translations['code']) {
$header = getTranslation('header', $_GET['lang']);
$footer = getTranslation('footer', $_GET['lang']);
break; // No need to waste time to look further.
}
}
if ($header === null) {
header('Location: language.php');
}
但是,只获取特定语言的结果(使用
where code=?
并绑定$\u GET['lang']
)会更明智。然后您不必在PHP中进行迭代,这通常比数据库所能提供的要慢。相反,您可以只查看您是否返回了0或1条记录(或者使用选择计数(*)
并检查它是否为0)。您应该将else部分移到循环之外,否则您将始终在循环迭代的某个点执行它。只有当您迭代了所有的可能性,但仍然没有匹配项时,才能确保必须导航到语言页面:
$header = null;
while ($translations = $languagesList->fetch()) {
if ($_GET['lang'] == $translations['code']) {
$header = getTranslation('header', $_GET['lang']);
$footer = getTranslation('footer', $_GET['lang']);
break; // No need to waste time to look further.
}
}
if ($header === null) {
header('Location: language.php');
}
但是,只获取特定语言的结果(使用
where code=?
并绑定$\u GET['lang']
)会更明智。然后您不必在PHP中进行迭代,这通常比数据库所能提供的要慢。相反,您可以只查看您是否返回了0或1条记录(或者使用选择计数(*)
并检查它是否为0)。最简单的方法是在数组中有一个映射,检查您的语言是否存在,如果存在,请执行一些操作。像这样的东西
$languages = array('en', 'fr', 'de', '...');
$default_language = 'en';
$language = in_array($_GET['lang'], $languages) ? $_GET['lang'] : $default_language;
$header = getTranslation('header', $language);
如您所见,我已经设置了一个默认语言,如果在查询变量中找不到该语言,将使用该语言。如何创建语言数组取决于您(一个简单的查询就足够了)。最简单的方法是在数组中有一个映射,检查您的语言是否存在,如果存在,请执行一些操作。像这样的东西
$languages = array('en', 'fr', 'de', '...');
$default_language = 'en';
$language = in_array($_GET['lang'], $languages) ? $_GET['lang'] : $default_language;
$header = getTranslation('header', $language);
如您所见,我已经设置了一个默认语言,如果在查询变量中找不到该语言,将使用该语言。如何创建语言数组取决于您(一个简单的查询就足够了)。
从语言列表中选择代码,其中code=$code
并查看它是否存在?但是使用一个准备好的语句。从语言列表中选择code=$code
,看看它是否存在?但是请使用事先准备好的声明。非常感谢,这很有效!准备好的语句实际上是在模型中的getTranslation()函数中完成的,我只是在寻找一种方法来重定向用户,而不调用该函数,以防有人弄乱URL中的参数。非常感谢,这很有效!准备好的语句实际上是在模型中的getTranslation()函数中完成的,我只是想寻找一种方法来重定向用户,而不调用该函数,以防有人弄乱URL中的参数。