AMB*_*AMB 0 php conditional if-statement
我想要做的是检查$_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 ;
}
Run Code Online (Sandbox Code Playgroud)
然后,如果链接是这样创建的,则稍后显示指向RSS FEED的链接
<?=(isset($RSS_link)) ? '<a href="'.$RSS_link.'">RSS FEED</a>' : '' ;?>
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,只有在页面不是收藏夹,rss,my_uploads时才会显示RSS FEED链接
但是如果像这样改变RSS创建条件.
<?php
if($mode != 'favorites' || $mode != 'rss' || $mode != 'my_uploads'){
$RSS_link = create rss link logic here ;
}else{
$RSS_link = null;
}
Run Code Online (Sandbox Code Playgroud)
即只是将操作符更改为相反并移动if if else to else to if if,
<?=(isset($RSS_link)) ? '<a href="'.$RSS_link.'">RSS FEED</a>' : '' ;?>
Run Code Online (Sandbox Code Playgroud)
然后尝试显示RSS FEED Link,它显示链接,无论模式设置如何.
为什么会这样?我怎样才能解决这个问题 ?
你需要改变自己的状况
$mode != 'favorites' || $mode != 'rss' || $mode != 'my_uploads'
Run Code Online (Sandbox Code Playgroud)
至
$mode != 'favorites' && $mode != 'rss' && $mode != 'my_uploads'
Run Code Online (Sandbox Code Playgroud)
这是使用De Morgan定律的常见变体
你总是可以用表来检查你的逻辑.
$mode = 'favorites';
$mode != 'favorites' || $mode != 'rss' || $mode != 'my_uploads'
// ^ false ^ true ^ true
// ^ true
// ^ true
Run Code Online (Sandbox Code Playgroud)
结果是真的.
$mode = 'favorites';
$mode != 'favorites' && $mode != 'rss' && $mode != 'my_uploads'
// ^ false ^ true ^ true
// ^ false
// ^ false
Run Code Online (Sandbox Code Playgroud)
结果错误.