Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Проблема с условными операторами

Автор вопроса: ProgrammingEnthusiastОтветов: 1

Каждый раз, когда я запускаю этот код, записывается только "Not from a", независимо от того, является ли местоположение "a" или нет.

function logsIn($dir, $account, $balance) {
   $d    = date("D F d Y - h:i A");
   $file = fopen("logs/$dir.txt", "a");

   if ($_SESSION['pass'] == "123") {
      if ($api["Location"] != "a")
         fwrite($file, "<span style='color:#FF0000;text-align:center';>Not from a.</span>");
      else
         fwrite($file, "From a.");
   }
  • Проверьте значение каждой используемой переменной и сравните ее значение с ожидаемым. Базовая отладка. Lightness Races in Orbit 24.07.2011
  • location это а или Location это а? Mat 24.07.2011
  • Кстати, я бы также порекомендовал вам избавиться от этого условного обозначения Бога на $_SESSION. Lightness Races in Orbit 24.07.2011

phpif-statementconditional

Ответы

Ответ 1 · рейтинг 5 · Pascal MARTIN

Вы используете в своей функции переменную с именем $api, но эта переменная нигде не определена.

Таким образом, $api["Location"] не может иметь значение 'a', поэтому вы всегда получаете "Not from a".


Примечание. Если у вас есть переменная $api, определенная вне вашей функции, она не будет видна изнутри этой функции.

Для получения дополнительной информации об этом вы должны взглянуть на Variable область применения раздела руководства.


В качестве решения, я полагаю, вы могли бы изменить свой код следующим образом:

  • $api ожидается в качестве параметра вашей logsIn() функцией,
  • И он передается этой функции, когда вы ее вызываете.

Вы также можете сделать переменную $api (если она существует вне вашей функции) видимой изнутри функции, используя global ключевое слово, но это не очень хорошая практика, так как это делает вашу функцию зависимой от внешней переменной.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы