Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的条件条件_Php - Fatal编程技术网

PHP中的条件条件

PHP中的条件条件,php,Php,我的项目可以在语言之间切换。这些项目存储在数据库中,并在数据库中使用$_GET['lang']返回正确的项目。目前,只使用英语和法语,因此它适用于以下代码: if ($_GET['lang'] == 'fr' OR ($_GET['lang'] == 'en')) { $header = getTranslation('header', $_GET['lang']); $footer = getTranslation('footer', $_GET['lang']); } els

我的项目可以在语言之间切换。这些项目存储在数据库中,并在数据库中使用$_GET['lang']返回正确的项目。目前,只使用英语和法语,因此它适用于以下代码:

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中的参数。