PHP - Instrukcje warunkowe (część 1)

in polish •  6 years ago 

Ostatnio poznaliśmy magiczne operatory porównań / przyrównań. Dzisiaj powinniśmy nauczyć się instrukcji warunkowych.

Ifologia to "nauka" zajmująca się Ifami. Ogólnie na stronach internetowych bardzo dużo używa się ifów, else ifów i else.

Ogólnie ostatnio tworzyliśmy różnego rodzaju przykłady - jeśli a jest większe od B to echo wyświetlało "1".

Ify

Jedynka w nomenklaturze programowania to prawda, a 0 - fałsz. Oczywiście nie w każdym języku programowania tak jest. Ale dobra - mamy jedynkę ... i co z tego? If pozwala nam sprawdzić czy dana sekcja jest poprawna i jeśli to prawda - uruchomić dany kod.

Działa to tak:

if(Warunek) {
// Kod
}

Ogólnie nie jest konieczne posiadanie klamer o ile kod wykonywany w if ma jedną linijkę. Natomiast moim zdaniem dla czytelności i ewentualnych problemów takie coś warto mieć.

Przykład:

<?php
$a=3;
$b=5;

if($a<$b) {
echo 'A jest mniejsze od B';
}

Mamy tutaj prosty przykład. A jest równe 3, B jest równe 5 i sprawdzamy czy A jest mniejsze niż B. Jeśli jest (co jest prawdą) to wyświetli napis.

Else

Else to warunek troszkę ostateczny. Oznacza tyle, że jeśli żaden powyższy kod nie jest prawdziwy to Else wykonuje się gdy "wszystko inne" zostało sprawdzone i jest nieprawdziwe.

Weźmy przykład lekko przerobiony

<?php
$a=6;
$b=5;

if($a<$b) {
echo 'A jest mniejsze od B';
}
else {
echo 'A jest większe od B';
}

A jest równe 6, B jest równe 5. Kod sprawdza czy $a jest mniejsze od $b. Nie jest, więc kod się nie wykonuje. Następne jest else - skoro poprzednie wyniki nie dały odpowiedzi to else jest wykonywany. A jest większe od B.

Else if

Ale ktoś może stwierdzić - Ok, jasne - ale co gdy $a jest równe 5 i $b jest równe 5? Przecież zgodnie z działaniem pierwszy warunek jest nieprawdziwy to wejdzie do Else i wyrzuci, że $a jest większe od $b (wyświetli tekst), a to nie prawda, gdyż są równe!

Oczywiście. Ifologia ma taki warunek, który może być wykonywany po If, ale przed else. Tak zwany else if (z warunkiem) - pusty przykład.

if(Warunek) {
// Kod
} else if(Warunek2) {
// Kod 2
} else {
// Kod Else
}

Albo po prostu przykład na żywym organizmie

<?php
$a=5;
$b=5;

if($a<$b) {
echo 'A jest mniejsze od B';
} else if($a == $b) {
echo 'A jest równe B';
} else {
echo 'A jest większe od B';
}

Czyli kod działa tak. Najpierw sprawdza czy $a jest mniejsze od $b. Nie jest, więc przechodzi dalej do else if - sprawdzane jest czy $a jest równe $b - jest, więc wykonywane jest kod else if.

Zadanie domowe

Zadanie może być trudne, ale wierzę, że dacie radę :P I troszkę dokumentację poczytacie.

Podaję w zmiennej liczbę, np. 6.3
Musicie powiedzieć czy ta liczba jest przez round zaokrąglana w górę czy dół.
Jeśli podam liczbę całkowitą to niech program poinformuje, że to liczba całkowita (więc nie podlega zaokrągleniu).

W DuckDuckGo poszukajcie:

  • ceil
  • floor
  • gettype
  • round

:)

Sprawdzamy

Ostatnio zadanie było podzielić liczbę i zwrócić resztę z dzielenia. Jedna osoba to zrobiła, za co dziękuję :) (@edeco)

<?php

$a=5;
$b=2;

echo floor($a/$b).','.($a%$b);

To do zobaczenia za tydzień! ;)

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

A może operatorem warunkowym :>

<?php
$zmienna = 6.3;
echo gettype($zmienna) == 'integer' ? 'Liczba całkowita!' : (round($zmienna) > $zmienna ? 'Zaokrągla w górę.' : 'Zaokrągla w dół.');

Wygrał!
Operator warunkowy to przecież też "if", tylko zapisany inaczej.
Kod wynikowy (binarny) w kompilatorze byłby chyba identyczny jak do

if (gettype($zmienna) == 'integer')
{
echo 'Liczba całkowita!'
}
else if ((round($zmienna) > $zmienna)
{
echo 'Zaokrągla w górę.'
}
else
{
echo 'Zaokrągla w dół.'
}

A może warunkowy skompilowałby się do krótszego kodu, bo jest jedno użycie echo a nie trzy ;]

Odmawiam :D

Świetna sprawa, uczę się tego w szkole :)