array_push не добавляет значение в случае использования внутри foreach> if - PullRequest
1 голос
/ 12 мая 2019

Я сейчас работаю над сайтом для своего проекта, но по какой-то причине, когда все так, как должно быть (сеанс запущен, переменная сеанса определена), тогда только функция array_push () не добавляет значение в переменную сеанса,когда я вывожу array_push () из if, foreach и if (если содержит foreach, а foreach содержит другое if), он работает нормально, я уже пытался поместить его сначала в 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 successfuly!");
            header("location: index.php?path=/");
            exit();
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 12 мая 2019

Поскольку код правильно работает из оператора if, очевидно, что условие вызывает проблему

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

Использование тройного = проверит значение и тип. Так что может быть тип каждого из них отличается от других.

Заменить его на:

$item == $_GET["setLang"] // only use two =
1 голос
/ 12 мая 2019

Спасибо за ваше время, но мой друг с безумным 5-летним опытом работы с php обнаружил ошибку. Все не сработало, потому что, когда переменная сеанса была установлена, страница перенаправляла вас на домашнюю страницу, но каждая страница снова переопределяла переменную сеанса в array (), поэтому значение не передавалось. Решением было добавить оператор, который проверил, существует ли переменная, если нет, то он определит ее как array (), если да, то он ничего не будет делать.

...