Avatar billede tatsudoshi Nybegynder
16. juni 2006 - 11:27 Der er 9 kommentarer og
1 løsning

Switch (case) med og, eller

Jeg vil lige høre, er det muligt at have && eller || i en case?

swtich($var) {
  case "byId" || "byName":
    {kode}
  break;
}
Avatar billede loevgaard Praktikant
16. juni 2006 - 11:34 #1
Ifølge en af kommentarerne kan det godt lade sig gøre: http://dk2.php.net/switch

case ("byId" || "byName"):
Avatar billede morhan Novice
16. juni 2006 - 11:40 #2
nej, det går vist ikke. syntaksen er

switch($var){
  case "byId":
  case "byName":
      ..kode..
      break;
}
Avatar billede tatsudoshi Nybegynder
16. juni 2006 - 11:52 #3
Heh, det hjalp jo ikke meget. Jeg må lave en test.
Avatar billede tatsudoshi Nybegynder
16. juni 2006 - 12:08 #4
Kode:
$modes = array("byId", "byName", "asSelect", "", null, "as", "Id", "Name", "Select");

print "<pre>";
print_r($modes);
print "</pre>";

foreach($modes as $mode) {
    switch($mode) {
        case "mode":
            print "<p>mode => uses ".$mode."</p>";
            break;
        case "mode1" || "mode2":
            print "<p>mode1 or mode2 => uses ".$mode."</p>";
            break;
        default:
            print "<p>default => cannot use ".$mode."</p>";
    }
}
Avatar billede tatsudoshi Nybegynder
16. juni 2006 - 12:08 #5
Print:
Array
(
    [0] => byId
    [1] => byName
    [2] => asSelect
    [3] =>
    [4] =>
    [5] => as
    [6] => Id
    [7] => Name
    [8] => Select
)

mode1 or mode2 => uses byId

mode1 or mode2 => uses byName

mode1 or mode2 => uses asSelect

default => cannot use

default => cannot use

mode1 or mode2 => uses as

mode1 or mode2 => uses Id

mode1 or mode2 => uses Name

mode1 or mode2 => uses Select
Avatar billede tatsudoshi Nybegynder
16. juni 2006 - 12:09 #6
Det virker ikke som om php kan finde ud af String variabler i Switch strukturen.
Avatar billede tatsudoshi Nybegynder
16. juni 2006 - 12:50 #7
Som morhan siger, er det forkert syntax. Da jeg fjernede || og satte det sådan her op virkde det 100% som forventet:

Kode:
<?php
$modes = array("byId", "byName", "asSelect", "", null, "as", "Id", "Name", "Select");

print "<pre>";
print_r($modes);
print "</pre>";

foreach($modes as $mode) {
    switch($mode) {
        case "mode":
            print "<p>mode => uses ".$mode."</p>";
            break;
        case "mode1":
        case "mode2":
            print "<p>mode1 or mode2 => uses ".$mode."</p>";
            break;
        default:
            print "<p>default => cannot use ".$mode."</p>";
    }
}?>

Print:
Array
(
    [0] => byId
    [1] => byName
    [2] => asSelect
    [3] =>
    [4] =>
    [5] => as
    [6] => Id
    [7] => Name
    [8] => Select
)

default => cannot use byId

default => cannot use byName

default => cannot use asSelect

default => cannot use

default => cannot use

default => cannot use as

default => cannot use Id

default => cannot use Name

default => cannot use Select
Avatar billede tatsudoshi Nybegynder
16. juni 2006 - 12:50 #8
morhan, hvis du vil have points, smider du bare et svar.
Avatar billede tatsudoshi Nybegynder
20. juli 2006 - 14:49 #9
lukker
Avatar billede tatsudoshi Nybegynder
20. juli 2006 - 14:50 #10
lovgaard: du får ikke points, fordi det er i bund og grund en forkert måde at bruge en switch struktur på, selvom det måske kan lade sig gøre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB