Kullanımı | | VEYA PHP

5 Cevap php

Ben yönlendirme sayfalarına aşağıdaki kod $ yoluna bağlıdır var.

...
$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
        ...
                }

Ben sağ sonuç almıyorum

$path==('web_tjenester' || 'webdesigndetails' || 
'vismahjemmeside' || 'joomla' || 'vismanettbutikk' || 
'vpasp' || 'artportfolio')

contact, illustration, gallery and webdesign are redirected and working alright. However all other pages are added CODE A.

Ben webdesigndetails ',' vismahjemmeside ',' joomla ',' vismanettbutikk ',' VPASP 'veya' artportfolio ',' $ yol web_tjenester olduğunda KOD A bekliyorum.

Herkes benim hata işaret ve beni lütfen düzeltin misiniz?

Şimdiden teşekkürler.

- GÜNCELLEME -

Aşağıdaki işleri, ancak herhangi bir yolu yoktur kodu kısaltmak?

Ben (== .. $ yol) tekrar ediyorum.

elseif(($path=='web_tjenester') || ($path=='webdesigndetails') || 
    ($path=='vismahjemmeside') || ($path=='joomla') || ($path=='vismanettbutikk') || 
    ($path=='vpasp') || ($path=='artportfolio')){

5 Cevap

|| operatörü mantıksal operatörü . The semantics of the expression a || b bunu değerlendirir o olduğunu true if ya a veya b değerlendirir true için, ve false aksi.

Bu yüzden ifadesi olarak amaçlanan bu şekilde kullanılamaz ('web_tjenester' || … || 'artportfolio') mantıksal bir değer (özel olmak üzere değerlendirilecektir: true olarak 'web_tjenester' değerlendirir true ile boolean conversion) o zaman değerine karşılaştırılacaktır $path.

Bir değer değerler kümesi olup olmadığını test etmek istiyorsanız, bir dizi kullanmak ve in_array ile değeri test edebilirsiniz:

in_array($path, array('web_tjenester', 'webdesigndetails', 'vismahjemmeside', 'joomla', 'vismanettbutikk', 'vpasp', 'artportfolio'))
$path==('web_tjenester' || 'webdesigndetails' || 
'vismahjemmeside' || 'joomla' || 'vismanettbutikk' || 
'vpasp' || 'artportfolio')

Bu geçerli sözdizimi değil, ameliyathanelerinde ayırarak her dize önünde $path == olması gerekir. Güzel görünüyor ki bunu yapmak için kolay bir yolu, bir dizideki tüm dize koymak ve daha sonra kontrol etmek için in_array() işlevini kullanmaktır.

$array = array('web_tjenester', 'webdesigndetails', 
'vismahjemmeside', 'joomla', 'vismanettbutikk',
'vpasp', 'artportfolio');
if (in_array($path, $array)) {
    // do whatever
}

$path == ('x' || 'y') "'| x | y' değerlendirmek anlamına gelir çünkü., ve bu $ yolu eşittir görmek Sen yapmak gerekir

if($path == 'x' || $path == 'y')

Ancak bir switch deyimi düşünebilirsiniz:

switch($patch) {
   case 'web_tjenester':
   case 'webdesigndetals':
          so_and_so();
          break; 
   case 'contact':
          redirect();
          break;
}

Ancak, bunu yapmadan önce anahtarı üzerinde okumak :)

Bunu bunu bir şekilde yapamaz: Sen $ yolu ile her şeyi karşılaştırmak gerekir, bu yüzden

$path=='web_tjenester' || $path=='webdesigndetails' || 
$path=='vismahjemmeside' || $path=='joomla' || $path=='vismanettbutikk' || 
$path=='vpasp' || $path=='artportfolio'

Bunu yapamazsın

$path==('web_tjenester' || 'webdesigndetails' || 'vismahjemmeside' || 'joomla' || 'vismanettbutikk' ||'vpasp' || 'artportfolio')

Bu olmalı

$path=='web_tjenester' || $path=='webdesigndetails' || $path=='vismahjemmeside' || $path=='joomla' ...

Eğer bir dizi kullanarak yolları ayarlamak ve temiz kod için [in_array()][1] kullanabilirsiniz.