[英]Usage of ||, OR in PHP
我有以下代碼,這些頁面重定向頁面取決於$ 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。
我只在$ path為web_tjenester,webdesigndetails,vismahjemmeside,joomla,vismanettbutikk,vpasp或artportfolio時才期待CODEA。
有人可以指出我的錯誤並糾正我嗎?
提前致謝。
-更新-
以下工作有效,但是有什么方法可以縮短代碼?
我在重復($ path == ..)。
elseif(($path=='web_tjenester') || ($path=='webdesigndetails') ||
($path=='vismahjemmeside') || ($path=='joomla') || ($path=='vismanettbutikk') ||
($path=='vpasp') || ($path=='artportfolio')){
||
運算符是邏輯運算符 。 表達式a || b
的語義 a || b
是它的計算結果為true,如果任a
或b
的值為真 ,否則為假 。
因此不能以您想要的方式使用它,因為表達式('web_tjenester' || … || 'artportfolio')
將被評估為布爾值(具體來說: true,因為'web_tjenester'
使用布爾值轉換為true ),然后將其與$path
的值進行比較。
如果要測試某個值是否在一組值中,則可以使用一個數組,並使用in_array
測試該值:
in_array($path, array('web_tjenester', 'webdesigndetails', 'vismahjemmeside', 'joomla', 'vismanettbutikk', 'vpasp', 'artportfolio'))
$path==('web_tjenester' || 'webdesigndetails' ||
'vismahjemmeside' || 'joomla' || 'vismanettbutikk' ||
'vpasp' || 'artportfolio')
這是無效的語法,您需要在$path ==
OR $path ==
的每個字符串前加上$path ==
。 看起來更好的方法是將所有字符串放入數組中,然后使用in_array()
函數進行檢查。
$array = array('web_tjenester', 'webdesigndetails',
'vismahjemmeside', 'joomla', 'vismanettbutikk',
'vpasp', 'artportfolio');
if (in_array($path, $array)) {
// do whatever
}
因為$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;
}
在這樣做之前先閱讀一下開關,但是:)
您不能以自己的方式來做:您應該將所有內容與$ path進行比較,因此
$path=='web_tjenester' || $path=='webdesigndetails' ||
$path=='vismahjemmeside' || $path=='joomla' || $path=='vismanettbutikk' ||
$path=='vpasp' || $path=='artportfolio'
你做不到
$path==('web_tjenester' || 'webdesigndetails' || 'vismahjemmeside' || 'joomla' || 'vismanettbutikk' ||'vpasp' || 'artportfolio')
它應該是
$path=='web_tjenester' || $path=='webdesigndetails' || $path=='vismahjemmeside' || $path=='joomla' ...
您可以設置數組中使用的路徑,並使用[in_array()][1]
獲得更清晰的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.