webForumDet fria alternativet

Switchsats med flera parametrar?

9 svar · 291 visningar · startad av GrodanBoll

GrodanBollMedlem sedan sep. 2001788 inlägg
#1

Hej hej :)

Jag skulle behöva ha en switchsats med flera parametrar.
Typ:

switch ($id, $l)
{
  case 2, 's';
     ech0 "Bla bla";
     break;
  o.s.v.
}

Kan man ha flera inparametrar? Har för mig att jag har läst om det någonstans.

Och hur gör man? :q

/G

FronKMedlem sedan maj 200225 inlägg
#2

Borde ju funka om man gör såhär:

switch ($xxxxx)
{
  case xxxxx:
  switch($yyyyy)
  {
    case yyyyy:
    nånting här
    break;

    case zzzzz:
    nånting här
    break;
  }
  break;

  case yyyyy:
  switch ($zzzzz)
  {
    case xxxxx:
    tralala
    break;

    case yyyyy:
    tralala
    break;
  }
  break;
}

Ser säkert jätte rörigt ut, men så blir det, finns säkert smartare sätt också.

MatteMedlem sedan aug. 20002 975 inlägg
#3

Att det går att ha flera alternativ i en case är inga problem:

switch ($var){
  case $var==1 || $var==2:
    //gör något
  break;
  case $var==3 || $var==4:
    //gör något
  break;
}

Om det sen går att skicka in flera variabler att kolla, det har jag ingen aning om. I så fall skulle det vara något liknande detta:

switch ($var1 && $var2){
  case $var1==1 && $var2==2:
    //gör något
  break;
  case $var1==3 && $var2==4:
    //gör något
  break;
}

Om det fungerar har jag som sagt ingen aning om. Testa om du har lust.

GrodanBollMedlem sedan sep. 2001788 inlägg
#4
$a = "kalle";
$b = "ada";

switch ($a && $b)
{
	case ($a == "kalle" && $b == "ada"):
		echo "Det stämmer";
		break;
	case ($a == "pelle" && $b == "ada"):
		echo "Men detta ska ju inte komma ut ju";
		break;
	default:
		echo "Default.";
}

Detta fungerade precis som Matte sa.

Dock fattar jag inte varför det ska vara '&&' istället för ',' som man alltid använder annars (alltså när man skickar in variablerna)?
Kan ni förklara det?

Tackar :bire

/Ni skulle se som Grodan hoppar :)

GunnarDMedlem sedan juni 20014 290 inlägg
#5

Därför att i detta fallet utnyttjar du inte switch funktionen!

switch( $a && $b ) är alltid uppfylt så länge $a och $b inehåller någonting (värdet SANT).
Sedan i varje case sats blir värdet av dina uttryck SANT, vilket du sedan testar mot uttrycket i swicth() satsen.

Det hadde varit enklare och mera logiskt att i detta fallet använda:

if($a == "kalle" && $b == "ada") then {
  echo "Det stämmer";
} elseif ($a == "pelle" && $b == "ada") then {
  echo "Men detta ska ju inte komma ut ju";
} else {
  echo "Default.";
}

Alltså switch() satsen är onödig eftersom du ändå beräknar saker i case satserna.
Vitsen med switch() är att man beräknar något som resulterar ett svar, sedan jämför man detta enda svar med ett antal case satser.

Se gärna i PHP manualen

netfeedMedlem sedan mars 2001593 inlägg
#6

gunnar varför har du med then i if-satserna? det behövs väl inte eller är det bara något jag missat?
är inte

if($a == "kalle" && $b == "ada") then {
  echo "Det stämmer";
} elseif ($a == "pelle" && $b == "ada") then {
  echo "Men detta ska ju inte komma ut ju";
} else {
  echo "Default.";
}

samma som

if($a == "kalle" && $b == "ada") {
  echo "Det stämmer";
} elseif ($a == "pelle" && $b == "ada") {
  echo "Men detta ska ju inte komma ut ju";
} else {
  echo "Default.";
}
GunnarDMedlem sedan juni 20014 290 inlägg
#7

Riktigt!
Av någon konstig vana så följde dom med på köpet när jag skrev koden. :)

GrodanBollMedlem sedan sep. 2001788 inlägg
#8

Aaaaah, kristallklart.
Fanken vad man vecklar in sig när man har ställt in sig på att använda en funktion, fast man sedan ska ha in lite mera info så omvärderar man inte situationen. E det tunnelseende det heter? :r

Aber ja natürlisch ska jag använda if-satser istället.

Tackar :)

/G

VirrdoMedlem sedan okt. 2001152 inlägg
#9

GunnarD: ASP-skadad ? =)
Bara du inte gör det till en vana, har en lärare osm blandar C++ och VB variabler hej vilt! :)

GunnarDMedlem sedan juni 20014 290 inlägg
#10

ASP? knappast :e
Däremot hoppar jag mellan shellscripts, php, c/c++ och perl dagligen. Nu skall jag börja "leka" med Java/J2EE så jag får se vilken röra jag hamnar i.

Varför kan inte syntaxen se samma ut i dom olika språken? :OO

134 ms totalt · 3 externa anrop · v20260731065814-full.7de19299
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)