оператор if — PHP странный, если вывод Else loop, если я делаю полную противоположность текущему состоянию

что я пытаюсь сделать, проверьте $_GET['mode'] для определенных типов страниц,
если режим избранный, страница rss или my_uploads, тогда не показывать ссылку RSS
как это

<?php
$mode = $_GET['mode'];
if($mode == 'favorites' || $mode == 'rss' || $mode == 'my_uploads'){
$RSS_link = null;
}else{
$RSS_link = create rss link logic here ;
}

затем позже показывать ссылку на RSS FEED, только если ссылка создана следующим образом

<?=(isset($RSS_link)) ? '<a href="'.$RSS_link.'">RSS FEED</a>' : '' ;?>

приведенный выше код работает нормально и показывает ссылку на RSS-канал только тогда, когда страницы не являются избранными, rss, my_uploads

но если изменить RSS создание условия, как это.

<?php

if($mode != 'favorites' || $mode != 'rss' || $mode != 'my_uploads'){
$RSS_link = create rss link logic here ;
}else{
$RSS_link = null;
}

то есть просто меняя операторов на противоположные и перемещаясь, если в другое, и еще, если,

<?=(isset($RSS_link)) ? '<a href="'.$RSS_link.'">RSS FEED</a>' : '' ;?>

и затем попытайтесь показать ссылку RSS FEED, она показывает ссылку, независимо от того, какой режим установлен.

Почему это происходит?
Как я могу это исправить ?

0

Решение

Вы должны изменить свое состояние

$mode != 'favorites' || $mode != 'rss' || $mode != 'my_uploads'

в

$mode != 'favorites' && $mode != 'rss' && $mode != 'my_uploads'

Это распространенный вариант использования Законы де Моргана

Вы всегда можете проверить свою логику с таблицами.

$mode = 'favorites';
$mode != 'favorites' || $mode != 'rss' || $mode != 'my_uploads'
//    ^ false                 ^ true            ^ true
//                   ^ true
//                                     ^ true

Результат верный.

$mode = 'favorites';
$mode != 'favorites' && $mode != 'rss' && $mode != 'my_uploads'
//    ^ false                 ^ true            ^ true
//                   ^ false
//                                     ^ false

Результат ложный.

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector