自定义函数有一个 if,它在函数之前执行



>我有一个函数来更改我网站的语言,在这个函数中有一个 if 语句,它可以在两种语言(土耳其语和英语(之间进行选择,但在我运行函数之前,if 语句有效并且条件适用,我想等到函数执行后。

setcookie("language", "tr", time()+(86400 * 365), "/", $vars->networkSite);
function langUrl(){
if (!isset($_COOKIE['language'])) {
$GLOBALS['langswitch'] = "EN";
$GLOBALS['language'] = "TR";
} elseif ($_COOKIE['language'] === "tr") {
setcookie("language", "en", time()+(86400 * 365), "/", $vars->networkSite);
$GLOBALS['langswitch'] = "EN";
$GLOBALS['language'] = "TR";
} elseif ($_COOKIE['language'] === "en") {
setcookie("language", "tr", time()+(86400 * 365), "/", $vars->networkSite);
$GLOBALS['langswitch'] = "TR";
$GLOBALS['language'] = "EN";
}
}
<button class="nav-link languageShortHand" type="submit" value="<? langUrl(); ?>"><?= $GLOBALS['langswitch'] ?></button>

我想在执行函数后执行。提前感谢您的帮助

PS:如果我每次刷新页面语言切换时都尝试像这样运行此代码。您可以在 https://umutore.com 上看到问题

你对函数的理解似乎是错误的。您正在通过执行<? langUrl(); ?>来执行它,似乎期望它返回一个URL。它实际上所做的是分配全局值,而不返回任何内容。

因此,您正在执行该函数,并且它按预期工作。你想做什么?

if (!isset($_COOKIE['language'])) {
$GLOBALS['langswitch'] = "EN";
} elseif ($_COOKIE['language'] === "tr") {
$GLOBALS['langswitch'] = "EN";
} elseif ($_COOKIE['language'] === "en") {
$GLOBALS['langswitch'] = "TR";
}
function languageSwitch (){
if ($GLOBALS['langswitch'] == "EN"){
echo "en";
} elseif ($GLOBALS['langswitch'] == "TR"){
echo "tr";
}
}
if ($_POST['language'] == "tr"){
$GLOBALS['langswitch'] = "EN";
echo "test1";
} elseif ($_POST['language'] == "en"){
$GLOBALS['langswitch'] = "TR";
echo "test2";
}
if ($GLOBALS['langswitch'] === "EN") {
setcookie("language", "tr", time()+(86400 * 365), "/", $vars->networkSite);
} elseif ($GLOBALS['langswitch'] === "TR"){
setcookie("language", "en", time()+(86400 * 365), "/", $vars->networkSite);
}

并使用这样的形式

<form class="vertical-align position-relative" action="<?=$_SERVER['PHP_SELF']?>" method="post">
<button class="nav-link languageShortHand" type="submit" value="<? languageSwitch();?>" name="language"><?=  $GLOBALS['langswitch'] ?></button>
</form>

由于临时名称的建议,修复了问题

最新更新