我有以下代码,重定向页面取决于$ 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
...
}
我用
得不到正确的结果$path==('web_tjenester' || 'webdesigndetails' ||
'vismahjemmeside' || 'joomla' || 'vismanettbutikk' ||
'vpasp' || 'artportfolio')
联系人,插图,画廊和网页设计被重定向并正常工作。 但是所有其他页面都添加了代码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')){
答案 0 :(得分:5)
||
operator is a logical operator。表达式a || b
的语义是,如果a
或b
评估为 true ,则表达式 true >否则为。
所以它不能以你想要的方式使用,因为表达式('web_tjenester' || … || 'artportfolio')
将被计算为布尔值(具体为: true ,因为'web_tjenester'
计算结果为 true 使用boolean conversion)然后将其与$path
的值进行比较。
如果要测试值是否在一组值中,可以使用数组并使用in_array
测试该值:
in_array($path, array('web_tjenester', 'webdesigndetails', 'vismahjemmeside', 'joomla', 'vismanettbutikk', 'vpasp', 'artportfolio'))
答案 1 :(得分:1)
$path==('web_tjenester' || 'webdesigndetails' ||
'vismahjemmeside' || 'joomla' || 'vismanettbutikk' ||
'vpasp' || 'artportfolio')
这不是有效的语法,您需要在每个字符串前面用$path ==
分隔OR。更简单的方法是将所有字符串放在一个数组中,然后使用in_array()
函数进行检查。
$array = array('web_tjenester', 'webdesigndetails',
'vismahjemmeside', 'joomla', 'vismanettbutikk',
'vpasp', 'artportfolio');
if (in_array($path, $array)) {
// do whatever
}
答案 2 :(得分:1)
因为$path == ('x' || 'y')
表示“评估'x || y',看看是否等于$ path。你需要做
if($path == 'x' || $path == 'y')
但是您可能需要考虑一个switch语句:
switch($patch) {
case 'web_tjenester':
case 'webdesigndetals':
so_and_so();
break;
case 'contact':
redirect();
break;
}
在这之前读取开关,但是:)
答案 3 :(得分:0)
你不能按照你的方式去做:你应该用$ path比较一切,所以
$path=='web_tjenester' || $path=='webdesigndetails' ||
$path=='vismahjemmeside' || $path=='joomla' || $path=='vismanettbutikk' ||
$path=='vpasp' || $path=='artportfolio'
答案 4 :(得分:0)
你不能这样做
$path==('web_tjenester' || 'webdesigndetails' || 'vismahjemmeside' || 'joomla' || 'vismanettbutikk' ||'vpasp' || 'artportfolio')
应该是
$path=='web_tjenester' || $path=='webdesigndetails' || $path=='vismahjemmeside' || $path=='joomla' ...
您可以设置阵列中使用的路径,并使用[in_array()][1]
获得更清晰的代码。