在PHP中使用||,OR

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)

Gum*_*mbo 5

||运营商是一个逻辑运算符.表达的语义a || b是,它的计算结果为,如果任一ab计算结果为,和否则.

所以它不能以你想要的方式使用,因为表达式('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)