PHP: If, Else Statements

Sådan bruger du simple if statements i PHP til at eksekvere kode betingelsesvis.

660 visninger

Edited: 2021-05-08 14:46

En ting de fleste programmeringssprog har til fælles er såkaldte if statements, som bliver brugt til, at tjekke om en given tilstand er sand eller falsk; afhængig af resultatet kan du så vælge at eksekvere forskelligt kode.

Sagt på en anden måde, du kan bruge if blokke til, at stille en slags "spørgsmål", og, afhængig af svaret, vælge at eksekvere et bestemt stykke kode.

I PHP vil en simpel if statement se sådan her ud:

if ('John' == $mit_navn) {
  echo 'Navnet var John!';
  exit();
}
echo 'Navnet var ukendt. Prøv igen.';

Koden imellem de krøllede parenteser { ... } er, det stykke kode som skal eksekverers, hvis udsagnet imellem parenteserne er sandt.

Der findes flere forskellige måder, at skrive if statements på i PHP.

Forskellige skrivemåder

Afhængig af situationen kan du benytte forskellige skrivemåder; ofte kan det resultere i kode som er mere læselig. Som udgangspunkt bør du undgå, at lave indlejrede (nested) if statements, da det hurtigt kan blive meget kompliceret.

Guard clauses

Som et alternativ til indlejrede if statments kan du bruge de såkaldte "klausul vagt" eller guard clauses i din kode. En guard clause er et koncept inden for programmering, som kan gøre din kode nemmere at læse og overskue.

Overvej strukturen på denne if statement:

if (isset($_POST['mit_navn'])) {
  if (preg_match ("/^[a-z\s]+$/i", $_POST['mit_navn'])) {
    echo 'Hej ' .  $_POST['mit_navn'];
    exit(); 
  } else {
    echo 'Navn var ikke gyldigt.';
    exit();
  }
} else {
  echo 'Navn skal udfyldes!';
  exit();
}

Omskrevet til at bruge guard clauses vil den være mere læselig:

if (!isset($_POST['mit_navn'])) {
   echo 'Navn skal udfyldes!';
   exit();
}

if (!preg_match ("/^[a-z\s]+$/i", $_POST['mit_navn'])) {
    echo 'Navn var ikke gyldigt.';
    exit();
}

// Hvis alle betingelser er opfyldt, så viser vi indholdet
echo 'Hej ' .  $_POST['mit_navn'];
exit();

Else if

Du kan også lave flere tjek i samme if-struktur; det kan være nyttigt, når du kun vil have, at et tjek bliver udført, hvis et foregående tjek fejlede.

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
   // Send både HTTP headers og indhold
} else if ($_SERVER['REQUEST_METHOD'] == 'HEAD') {
   // Send kun HTTP headers
}

Kolon og semikolon

Alternativt kan vi også bruge kolon og semikolon:

if (100 == $min_alder):
  echo 'Du er nu blevet 100 år gammel. Tillykke!';
else:
  echo 'Du er stadig ikke alderspræsident!';
endif;

Enkelt-linje statements

En anden nyttig skrivemåde kan være, at skrive if statements på en enkelt linje for at spare plads i koden. Det kan specielt være nyttigt, hvis man har en masse $_POST variabler, som skal valideres.

I eksemplet nedenfor defineres variablerne $name og $email til false, hvis felterne ikke er blevet korrekt udfyldt i en HTML formular:

$name = (isset($_POST['name'])) ? $_POST['name'] : false;
$email = (isset($_POST['email'])) ? $_POST['email'] : false;

Derved kan variablerne anvendes senere i koden, uden at det resultere i en fejl, hvis et $_POST variabel ikke er udfyldt.

Links

  1. This article in English - beamtic.com

Fortæl os hvad du tænker:

    Flere i: PHP Vejledninger