Joakim Gjerde Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 Hei! Jeg sitter nå med en php kode, hvor en if skal gjøre samme ting hvis verdien den sjekker er en del forskjellige tall. Er det da noe måte å deffinere å gjøre det noe alle dette? if ($tall == "10,30,50") {echo "Dette er nr i første tallrekke";} I steden for å måtte gjøre slik if ($tall == "10") {echo "Dette er nr i første tallrekke";} elseif ($tall == "30") {echo "Dette er nr i første tallrekke";} elseif ($tall == "50") {echo "Dette er nr i første tallrekke";} Mvh Joakim Gjerde Lenke til kommentar
trondes Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 if ($tall == "10" OR $tall == "30" OR $tall == "50") echo "Dette er nr i første tallrekke"; Hvis du vil at feks $tall skal være 10 og $nr skal være 20 bruker du AND istede for OR if ($tall == "10" AND $nr == "20") echo "Dette er nr i første tallrekke"; Lenke til kommentar
Peter Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 evt kan du bruke in_array() for å sjekke om verdien er i en array (som kan definere verdiområdet). Lenke til kommentar
allyse Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 Oppfølging til trondes; For å være litt mer proff bør du bruke: || (OR) && (AND) andre ting du f.eks kan bruke: <= (mindre eller lik) >= (større eller lik) osv. ! ("motsatt" eller "ikke" f.eks if (!in_array(input)) betyr at du vil lete etter "false" som resultatet av in_array) Lenke til kommentar
endrebjo Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 Oppfølging til trondes; For å være litt mer proff bør du bruke: || (OR) && (AND) 6221232[/snapback] Hvorfor det? Går det raskere? Jeg har aldri forstått hvorfor man skal bruke de to når AND og OR er mye lettere å lese. Lenke til kommentar
Peter Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 Ser ikke hvorfor det skulle være mer "professjonelt" å bruke || og &&, men jeg er ikke enig i at lesbarheten er noe bedre ved "AND" og "OR" heller. Personlig bruker jeg || og && fordi jeg er vant med det fra andre språk som C++ og Java, dermed er det mest naturlig for min del. Lenke til kommentar
Mapster Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 (endret) En annen ting en kan gjøre er å bruke modulus (%), hvis du f.eks vil ha alle tall som er hele tiere. Da gjør du slik: if( $tall%10 == 0) {operasjoner;} // eller hvis du vil ha alle tall som er multiplikat av 7 (7, 14, 21 osv.) if( $tall%7 == 0) {operasjoner;} Ved bruk av modulus returneres restverdien av ett tall delt på ett annet, dvs. 5%4=1 og 5%3=2. edit: Du kan også finne alle tall som slutter på en bestemt verdi. La oss si du vil ha alle tall som slutter på 3 (3, 13, 4373, 6863 o.l) 3%10=3, 13%10=3, 4373%10=3, 6863%10=3. Er ikke helt hva du spør om dette, men det er veldig grei ting å vite, og kan utnyttes i veldig mange tilfeller. Endret 1. juni 2006 av MapSter Lenke til kommentar
allyse Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 (endret) Oppfølging til trondes; For å være litt mer proff bør du bruke: || (OR) && (AND) 6221232[/snapback] Hvorfor det? Går det raskere? Jeg har aldri forstått hvorfor man skal bruke de to når AND og OR er mye lettere å lese. 6221305[/snapback] Det er for å holde en viss "standard". Om det er noen andre fordeler veit jeg ikke, men hadde du jobbet her måtte du nok pent skrevet om scriptene dine hvis du hadde brukt AND og OR i setningene dine Endret 1. juni 2006 av allyse Lenke til kommentar
Ernie Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 (endret) Oppfølging til trondes; For å være litt mer proff bør du bruke: || (OR) && (AND) 6221232[/snapback] Hvorfor det? Går det raskere? Jeg har aldri forstått hvorfor man skal bruke de to når AND og OR er mye lettere å lese. 6221305[/snapback] Dette har null og niks med lesbarhet å gjøre, ei heller ytelse. Det har med presidens å gjøre og varierer fra språk til språk. I noen språk er slik at && og || har høyere presidens enn AND og OR, noe som kan skape problemer. Dette er tilfelle i PHP. <?php $a = -1; $b = $a < 100 and $a > 0; $c = ($a < 100 and $a > 0); ($d = $a < 100) and $a > 0; ?> I dette tilfellet forventer vi at $b vil være det samme som $c. Derimot er faktum det at $b være true, $c false og $d true og altså at $b og $d er det samme. Nå, hvis vi går fra and til && blir resultatet korrekt i hendhold til hva vi forventer. $a = -1; $b = $a < 100 && $a > 0; $c = ($a < 100 && $a > 0); ($d = $a < 100) && $a > 0; Nå er $b false, $c false og $d true, og altså $b det samme som $c. Endret 1. juni 2006 av Ernie Lenke til kommentar
alp_renx Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 evt kan du bruke in_array() for å sjekke om verdien er i en array (som kan definere verdiområdet). 6220269[/snapback] for eksempel if(in_array($tall,array(10,30,50))) { print "Finnes"; } else { print "Finnes ikke"; } Lenke til kommentar
endrebjo Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 Oppfølging til trondes; For å være litt mer proff bør du bruke: || (OR) && (AND) 6221232[/snapback] Hvorfor det? Går det raskere? Jeg har aldri forstått hvorfor man skal bruke de to når AND og OR er mye lettere å lese. 6221305[/snapback] Dette har null og niks med lesbarhet å gjøre, ei heller ytelse. Dette har med presidens å gjøre. Dette varierer veldig fra språk til språk, men i noen språk er slik at && og || har høyere presidens enn AND og OR, noe som kan skape problemer. Dette er tilfelle i PHP. <?php $a = -1; $b = $a < 100 and $a > 0; $c = ($a < 100 and $a > 0); ($d = $a < 100) and $a > 0; ?> I dette tilfellet forventer vi at $b vil være det samme som $c. Derimot er faktum det at $b være true, $c false og $d true og altså at $b og $d er det samme. Nå, hvis vi går fra and til && blir resultatet korrekt i hendhold til hva vi forventer. $a = -1; $b = $a < 100 && $a > 0; $c = ($a < 100 && $a > 0); ($d = $a < 100) && $a > 0; Nå er $b false, $c false og $d true, og altså $b det samme som $c. 6221477[/snapback] Men hvis man er mer generøs med parentesene ordner det seg vel.Slik at i $a = -1; $b = ($a < 100) and ($a > 0); så vil $b være false. Lenke til kommentar
Ernie Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 (endret) Nope, ikke her iallfall Edit: For å forklare det litt bedre: Vi forventer at $b = $a < 100 and $a > 0; vil være det samme som $c = ($a < 100 and $a > 0); Dette stemmer ikke siden and har lavere presidens enn =. Dermed er det egentlig det samme som å si ($d = $a < 100) and $a > 0; && har derimot høyere presidens enn = og får dermed ikke det samme problemet. Endret 1. juni 2006 av Ernie Lenke til kommentar
endrebjo Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 Ahh.. da forstår jeg. Men denne fungerer: $a = -1; $b = (($a < 100) AND ($a > 0)); Der blir $b = 0. Lenke til kommentar
Ernie Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 (endret) Ahh.. da forstår jeg. Men denne fungerer: $a = -1; $b = (($a < 100) AND ($a > 0)); Der blir $b = 0. 6221646[/snapback] Jepp, eller $b = ($a < 100 AND $a > 0). Poenget er uannsett at and og or ikke nødvendigvis gir de resultatene vi tror og det er ganske vanskelig å se de feilene siden et fåtall av oss husker hvor and og or står i forhold til andre operatorer samtidig som resultatet ofte alikevel kan være riktig selv om tankegangen er feil. Bruk f.eks ethvert tall fra 0 til 100 som $a og både $b, $c og $d vil gi samme resultat. Med andre ord er det vanskelig å faktisk vite om det man koder er korrekt. Da er det mye lettere å bruke && og || (istedet for and og or) og slippe unna problemet. Dog, hvis man bare MÅ bruke and og or så er løsningen parantes rundt uttrykket hvis man er i tvil, men så er det jo ikke alltid man er i tvil når man burde Endret 1. juni 2006 av Ernie Lenke til kommentar
Joakim Gjerde Skrevet 1. juni 2006 Forfatter Del Skrevet 1. juni 2006 Er dere ikke plutselig litt oftopic nå? Hehe 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å