shi*_*hin 0 php logical-operators
我有以下代码重定向页面取决于$ path.
...
$path = $this->uri->segment(3);
$pathid = $this->uri->segment(4);
if($path=='forsiden'){
redirect('','refresh');
}elseif($path =='contact'){
redirect('welcome/kontakt','refresh');
}elseif($path =='illustration'){
$this->_gallery($path,$pathid);
}elseif($path =='webdesign'){
redirect('welcome/webdesign','refresh');
}elseif($path==('web_tjenester' || 'webdesigndetails' ||
'vismahjemmeside' || 'joomla' || 'vismanettbutikk' ||
'vpasp' || 'artportfolio')){
...
CODE A
...
}else{
...
CODE B
...
}
Run Code Online (Sandbox Code Playgroud)
我没有得到正确的结果
$path==('web_tjenester' || 'webdesigndetails' ||
'vismahjemmeside' || 'joomla' || 'vismanettbutikk' ||
'vpasp' || 'artportfolio')
Run Code Online (Sandbox Code Playgroud)
联系人,插图,画廊和网页设计被重定向,工作正常.但是所有其他页面都添加了CODE A.
我期待代码A只有当$ path是web_tjenester','webdesigndetails','vismahjemmeside','joomla','vismanettbutikk','vpasp'或'artportfolio'时.
任何人都可以指出我的错误并纠正我吗?
提前致谢.
--UPDATE--
以下是有效的,但是有什么方法可以缩短代码吗?
我在重复($ path == ..).
elseif(($path=='web_tjenester') || ($path=='webdesigndetails') ||
($path=='vismahjemmeside') || ($path=='joomla') || ($path=='vismanettbutikk') ||
($path=='vpasp') || ($path=='artportfolio')){
Run Code Online (Sandbox Code Playgroud)
该||运营商是一个逻辑运算符.表达的语义a || b是,它的计算结果为真,如果任一a或b计算结果为真,和假否则.
所以它不能以你想要的方式使用,因为表达式('web_tjenester' || … || 'artportfolio')将被计算为一个布尔值(具体来说:true,因为使用布尔转换'web_tjenester'求值为true),然后将其与值进行比较.$path
如果要测试值是否在一组值中,则可以使用数组并使用以下值测试该值in_array:
in_array($path, array('web_tjenester', 'webdesigndetails', 'vismahjemmeside', 'joomla', 'vismanettbutikk', 'vpasp', 'artportfolio'))
Run Code Online (Sandbox Code Playgroud)