Gå til innhold

Else/If: "else" vises uansett


Anbefalte innlegg

Hei

 

Har begynt å få teken på enkel PHP nå og blir bare mer og mer begeistret over mulighetene. Men selvfølgelig går aldri ting slik de skal og en ting har stoppet meg veldig i det siste.

 

<?php
if ( $action == "produksjoner" ) {echo "Produksjoner";}
if ( $action == "utstyr" ) {echo "Utstyr";}
if ( $action == "bilder" ) {echo "Bilder";}
if ( $action == "info" ) {echo "Informasjon";}
else {
   echo "Du har ikke valgt noen ting";
}
?>

 

I denne sammenhengen vil alltid "Du har ikke valgt noen ting" vises. Enten sammen med en av de andre "echoene"(produksjoner etc.), eller alene hvis ingenting er valgt.

 

Men da blir jo litt av poenget med "else" borte, i hvert fall for min del.

Hvordan får jeg "else" til å vises kun når det faktisk skal vises og ikke ellers?

 

(Hvis jeg klarte å formulere det godt nok...)

Lenke til kommentar
Videoannonse
Annonse

Veit ikkje om det virker, men:

<?php
elseif ( $action == "produksjoner" ) {echo "Produksjoner";}
elseif ( $action == "utstyr" ) {echo "Utstyr";}
elseif ( $action == "bilder" ) {echo "Bilder";}
elseif ( $action == "info" ) {echo "Informasjon";}
else {
  echo "Du har ikke valgt noen ting";
}
?>

Virkar det?

Lenke til kommentar

Vel, her har man to alternativer:

 

1. "If/elseif/else"-løsning:

if ( $action == "produksjoner" ) {
echo "Produksjoner";
}
elseif ( $action == "utstyr" ) {
echo "Utstyr";
}
elseif ( $action == "bilder" ) {
echo "Bilder";
}
elseif ( $action == "info" ) {
echo "Informasjon";
}
else {
 echo "Du har ikke valgt noen ting";
}

 

2. "Switch/case/default"-løsning:

switch ($action) {
case "produksjoner":
 echo "Produksjoner";
 break;
 
case "utstyr"
 echo "Utstyr";
 break;
 
case "bilder"
 echo "Bilder";
 break;
 
case "info"
 echo "Informasjon";
 break;
 
default:
   echo "Du har ikke valgt noen ting";
}

 

Personlig synes foretrekker jeg switch/case/default.

Lenke til kommentar
Du har ikke noe å bryte av, men det er god kodestil vil jeg nok si.

5590049[/snapback]

God kodestil å avbryte når det ikke er mer kode å kjøre? Ærligtalt, ikke uttal deg om noe du ikke veit. Ta en titt her så ser du fort at man ikke kjører break i default. Grunnen til at man har break i case er for å unngå kjøring av case under samt default. Siden default alltid må komme tilslutt er det ingen case under å unngå og dermed er break unødvendig. Bruk av break i default vitner ikke om god kodestil, men heller uvitenhet.

Lenke til kommentar
Vel, her har man to alternativer:

 

1. "If/elseif/else"-løsning:

if ( $action == "produksjoner" ) {
echo "Produksjoner";
}
elseif ( $action == "utstyr" ) {
echo "Utstyr";
}
elseif ( $action == "bilder" ) {
echo "Bilder";
}
elseif ( $action == "info" ) {
echo "Informasjon";
}
else {
 echo "Du har ikke valgt noen ting";
}

Jeg er kretsmester i kverulering og flisespikking så her kommer et annet alternativ:

if ( $action == "produksjoner" )
  echo "Produksjoner";
elseif ( $action == "utstyr" )
  echo "Utstyr";
elseif ( $action == "bilder" )
  echo "Bilder";
elseif ( $action == "info" )
  echo "Informasjon";
else
  echo "Du har ikke valgt noen ting";

Altså når koden inni if-setninga er en linje kan en droppe { og }. Så var det også skrevet... :)

Lenke til kommentar
Du har ikke noe å bryte av, men det er god kodestil vil jeg nok si.

5590049[/snapback]

Siden default alltid må komme tilslutt er det ingen case under å unngå og dermed er break unødvendig. Bruk av break i default vitner ikke om god kodestil, men heller uvitenhet.

5590105[/snapback]

 

Default ikke komme til slutt, men bør det for å unngå rot. Veldig viktig å skille mellom, for av og til har du behov for å kjøre default + en annen case for f.eks. å unngå å bruke to switch-setninger. :)

 

Og det er god praksis å bruke break i alle case du vil breake etter, for å unngå rot og uorden senere, f.eks. når du skal legge til flere case og legger dem etter default. Lett å gjøre slikt når du sitter og koder med 40% koffein i blodet klokken halv seks en natt... ;)

 

EDIT: og/å-typo :hrm:

Endret av jorgis
Lenke til kommentar
Vel, her har man to alternativer:

 

1. "If/elseif/else"-løsning:

if ( $action == "produksjoner" ) {
echo "Produksjoner";
}
elseif ( $action == "utstyr" ) {
echo "Utstyr";
}
elseif ( $action == "bilder" ) {
echo "Bilder";
}
elseif ( $action == "info" ) {
echo "Informasjon";
}
else {
 echo "Du har ikke valgt noen ting";
}

Jeg er kretsmester i kverulering og flisespikking så her kommer et annet alternativ:

if ( $action == "produksjoner" )
  echo "Produksjoner";
elseif ( $action == "utstyr" )
  echo "Utstyr";
elseif ( $action == "bilder" )
  echo "Bilder";
elseif ( $action == "info" )
  echo "Informasjon";
else
  echo "Du har ikke valgt noen ting";

Altså når koden inni if-setninga er en linje kan en droppe { og }. Så var det også skrevet... :)

5594301[/snapback]

Joa, men jeg vil nesten anta det skal være mer enn bare echo der :)

 

 

Du har ikke noe å bryte av, men det er god kodestil vil jeg nok si.

5590049[/snapback]

Siden default alltid må komme tilslutt er det ingen case under å unngå og dermed er break unødvendig. Bruk av break i default vitner ikke om god kodestil, men heller uvitenhet.

5590105[/snapback]

 

Default ikke komme til slutt, men bør det for å unngå rot. Veldig viktig å skille mellom, for av og til har du behov for å kjøre default + en annen case for f.eks. å unngå å bruke to switch-setninger. :)

 

Og det er god praksis å bruke break i alle case du vil breake etter, for å unngå rot og uorden senere, f.eks. når du skal legge til flere case og legger dem etter default. Lett å gjøre slikt når du sitter og koder med 40% koffein i blodet klokken halv seks en natt... ;)

 

EDIT: og/å-typo :hrm:

5594408[/snapback]

Hmm ... faktisk er det vist ikke slik at default må være tilslutt gitt :dontgetit: Jaja, uannsett, de tilfellene der hvor man vil kjøre default + en case er sjeldene og kan bli kompliserte å tenke seg ut.
Lenke til kommentar
Du har ikke noe å bryte av, men det er god kodestil vil jeg nok si.

5590049[/snapback]

Siden default alltid må komme tilslutt er det ingen case under å unngå og dermed er break unødvendig. Bruk av break i default vitner ikke om god kodestil, men heller uvitenhet.

5590105[/snapback]

 

Default ikke komme til slutt, men bør det for å unngå rot. Veldig viktig å skille mellom, for av og til har du behov for å kjøre default + en annen case for f.eks. å unngå å bruke to switch-setninger. :)

 

Og det er god praksis å bruke break i alle case du vil breake etter, for å unngå rot og uorden senere, f.eks. når du skal legge til flere case og legger dem etter default. Lett å gjøre slikt når du sitter og koder med 40% koffein i blodet klokken halv seks en natt... ;)

 

EDIT: og/å-typo :hrm:

5594408[/snapback]

Hmm ... faktisk er det vist ikke slik at default må være tilslutt gitt :dontgetit: Jaja, uannsett, de tilfellene der hvor man vil kjøre default + en case er sjeldene og kan bli kompliserte å tenke seg ut.

5594660[/snapback]

 

switch ($i)
{
default:
KanskjeEndreVerdienTilI(&$i);

case 1:
echo '$i = 1';
break;
}

 

;)

 

KanskjeEndreVerdienTilI() endrer verdien til $i om den har lyst (har ingen praktiske eksempler, men de finnes), og kjøres alltid. Likevel sjekkes de andre case i tilfelle KanskjeEndreVerdienTilI() har endret verdien til $i. :)

Lenke til kommentar
KanskjeEndreVerdienTilI() endrer verdien til $i om den har lyst (har ingen praktiske eksempler, men de finnes), og kjøres alltid. Likevel sjekkes de andre case i tilfelle KanskjeEndreVerdienTilI() har endret verdien til $i. :)

5594796[/snapback]

Kan en ikke bare kjøre den KanskjeEndreVerdienTilI() før en går inn i switch?

Lenke til kommentar
KanskjeEndreVerdienTilI() endrer verdien til $i om den har lyst (har ingen praktiske eksempler, men de finnes), og kjøres alltid. Likevel sjekkes de andre case i tilfelle KanskjeEndreVerdienTilI() har endret verdien til $i. :)

5594796[/snapback]

Kan en ikke bare kjøre den KanskjeEndreVerdienTilI() før en går inn i switch?

5598839[/snapback]

Joda, det er nok fult mulig.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...