Kenneth Dammyr Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 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
Arne Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 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
kimla Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 Tror du må poste litt mer kode for at folk skal kunne klare å hjelpe deg Lenke til kommentar
Ernie Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 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
Kenneth Dammyr Skrevet 11. februar 2006 Forfatter Del Skrevet 11. februar 2006 Takk takk! You saved my day Lenke til kommentar
Zic0 Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 Du har glemt å sette break; på default'en din. Lenke til kommentar
Ernie Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 Du har glemt å sette break; på default'en din. 5588858[/snapback] Nei, det glemte jeg overhode ikke. Hva i alle dager er det jeg skal bryte av? Lenke til kommentar
Zic0 Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 Du har ikke noe å bryte av, men det er god kodestil vil jeg nok si. Lenke til kommentar
dabear Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 Default bør uansett stå sist, så det er ingen vits å bruke break på den. Personlig foretrekker jeg ei array-løsning, men det spørs om det passer i dette tilfellet (rekner med du skal gjøre mer enn å printe ut en liten tekst). Lenke til kommentar
Ernie Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 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
allyse Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 Enig med Ernie. God kodestil er å holde syntax, samt ikke ha overflødig kode. Lenke til kommentar
Albino Skrevet 12. februar 2006 Del Skrevet 12. februar 2006 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
jorgis Skrevet 12. februar 2006 Del Skrevet 12. februar 2006 (endret) 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 må 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 Endret 12. februar 2006 av jorgis Lenke til kommentar
Ernie Skrevet 12. februar 2006 Del Skrevet 12. februar 2006 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 må 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 5594408[/snapback] Hmm ... faktisk er det vist ikke slik at default må være tilslutt gitt 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
jorgis Skrevet 12. februar 2006 Del Skrevet 12. februar 2006 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 må 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 5594408[/snapback] Hmm ... faktisk er det vist ikke slik at default må være tilslutt gitt 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
Albino Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 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
Ernie Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå