Задать вопрос
@game802

В чем может быть причина неверного сравнения в php?

Добрый день, уважаемые знатоки.
Столкнулся со следующей проблемой: У меня не хочет работать if else(банально)
$add_news_sql = $db->query(" SELECT * FROM `dle_popular_news` ");

// Занесения массива, полученного из БД в новый массив O_o
while( $row = $db->get_row($add_news_sql) ) {
  // Присвоение $news_replace title из dle_post
  if( $row['id_news'] != "9999" || $row['id_news'] != "0" ) {
    // Сравнение id, полученного из dle_popular_news c id в dle_post, для присвоение title
    $news_replace = $db->query(" SELECT `title` FROM `dle_post` WHERE `id` = ".$row['id_news']." ");

    while ( $row_inserted = $db->get_row($news_replace) ) {
      $news_replace = $row_inserted['title'];
    }
  } else {
    $news_replace = 'Значение не установлено';
  }

  // Добавление title в главный массив
  $add_news[$row['id_edit']] = $news_replace;
}

Проверял тип $row['news_id'], он String. Пробовал работать с сравнительными значениями "0" и "9999".
В итоге, у меня if пропускает значения 0 и 9999, в чем может быть причина? Спасибо!!
  • Вопрос задан
  • 179 просмотров
Подписаться 1 Оценить 7 комментариев
Решения вопроса 2
Winsik
@Winsik
сис.админ, недопрограммист :)
id=9999: Если 9999<>9999 или 9999<>0 = выполняем
id=0: Если 0<>9999 , дальше проверка не идёт = выполняем
ud=555: Если 5555<>9999 или 555<>0 = и опять выполняем
Ответ написан
У вас условие всегда истинно.
Если переменная равна 0, то она не равна 9999, и все выражение обращается в true
Если переменная равна 9999, то она не равна 0, и все выражение обращается в true

!($row['id_news'] == "9999" || $row['id_news'] == "0")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы