array_push 在 foreach 内部使用时不增加价值 > if

array_push does not add value in case of used inside of foreach > if

我目前正在为我的项目开发一个网站,但出于某种原因,当一切都按原样进行时(会话已启动,会话变量已定义),那么只有 array_push() 函数不将值添加到会话变量,当我将 array_push() 移出 if、foreach 和 if(如果包含 foreach 并且 foreach 包含另一个 if)时,它工作正常,我已经尝试将它放在第一位如果,然后 foreach 但它没有帮助。所以它只有在它不在该代码中时才有效(当它不在那个 if 中时,它包含 foreach,它包含另一个 if)。请尝试理解,我的英语不好。

我该怎么做才能修复它?

if(isset($_GET["setLang"])) {
    foreach ($languages as $item) {
        if($item === $_GET["setLang"]) {
            $_SESSION["selLang"] = $item;
            array_push($_SESSION["sessionMessage"], "Language changed successfully!");
            header("location: index.php?path=/");
            exit();
        }
    }
}

由于代码在 if 语句之外正常工作,很明显是条件导致了问题

$item === $_GET["setLang"]

使用三元组 = 将检查值和类型。所以可能每个的类型都不同于其他的。

替换为:

$item == $_GET["setLang"] // only use two =