Gå til innhold

Flere verdier i en if


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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 av MapSter
Lenke til kommentar
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 av allyse
Lenke til kommentar
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 av Ernie
Lenke til kommentar
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

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 av Ernie
Lenke til kommentar
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 :shrug:

Endret av Ernie
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...