2012-12-01 23:13:52

Operatory arytmetyczne w PHP

W PHP operatory służą do wykonywania działań na zmiennych. Jest to zagadnienie dosyć proste, ale w pewnych przypadkach bywa dosyć ciekawe. Na tych właśnie przypadkach będę chciał się skupić. Dla porządku przedstawiam tabelkę zawierającą operatory arytmetyczne z przykładami ich zastosowania.

operator przeprowadzana operacja
+ dodawanie $a=$b+3;
- odejmowanie $a=$b-3;
* mnożenie $a=$b*3;
/ dzielenie $a=$b/3;
% dzielenie modulo (zwraca liczbę całkowitą stanowiącą resztę z dzielenia)
++ inkrementacja $a++ ( dodaje do zmiennej wartość 1)
–– dekrementacja $a––(odejmuje od zmiennej wartość 1)

Myślę, że 4 pierwsze operatory nie wymagają żadnych wyjaśnień. Kolejny operator % czyli dzieleni modulo wyjaśnię na dodatkowym przykładzie. Załóżmy, że mamy do wyświetlenia na stronie 37 ikonek. Chcemy to zrobić w tabelce mającej 4 kolumny. Od razu widać, że ostatni wiersz tabeli nie będzie wypełniony do końca. Aby tabelka wyglądała przyzwoicie, musimy wiedzieć ile pustych komórek należy umieścić w ostatnim wierszu. Tę wartość możemy policzyć np. w taki sposób:

<?php
	$elementy = array('ikona1.png', 'ikona2.png', ..., 'ikona37.png');	//tablica z 37 ikonkami
	$liczba_kolumn = 4;
	$liczba_pustych_komorek_na_w_ostatnim_wierszu = $liczba_kolumn - count($elementy) % $liczba_kolumn;
?>

Mam tablicę $elementy z 37 ikonkami i zmienną $liczba_kolumn. W kolejnej instrukcji funkcją count() obliczam ilość elementów tablicy i otrzymuję wartość 37. Na otrzymanym wyniku wykonuję operację modulo (%), która w wyniku daje mi wartość 1. Odejmuję tę wartość od liczby kolumn i otrzymuję ilość komórek, które muszę uzupełnić.

Kolejne dwa operatory to inkrementacja i dekrementacja. Obydwa mogą występować zarówno przed, jak i po zmiennej. Jeżeli występują przed, to wartość zmiennej jest najpierw zmieniana przez operator, a dopiero potem nowa wartość jest wykorzystywana. Jeżeli operator jest umieszczony za zmienną, to najpierw wykorzystywana jest wartość zmiennej, a dopiero później działa operator inkrementacji lub dekrementacji.

Doskonale zdaję sobie sprawę, że powyższe wyjaśnienie może być mało czytelne, dlatego posłużę się ponownie przykładem:

<?php
	$a=5;
	echo $a++;		//najpierw wyświetlana jest wartość zmiennej - czyli 5, a następnie operator '++' zmienia jej wartość do 6.
	echo $a;		//wyświetlana jest nowa wartość - czyli 6
	echo ++$a;		//ty razem najpierw zwiększa się wartość zmiennej do 7 i ta właśnie nowa wartość jest wyświetlana
?>

Myślę, że teraz wszyscy już doskonale rozumieją na czym to polega. Jeżeli ktoś chciałby się sprawdzić, to proszę policzyć, ale bez komputera, jaki wynik wyświetli poniższy kod. Wyniki proszę podawać w komentarzach. Jeżeli zetknąłeś się z tym tematem po raz pierwszy, nie przejmuj się, jeżeli sprawi Ci trudność. Na jednym ze szkoleń, które ostatnio prowadziłem, przy 8 uczestnikach, padło 9 różnych odpowiedzi.

<?php
	$a=8;
	echo $a--+5*--$a+3*$a--+$a++-2*$a;
?>

Tagi: , , , , ,

8 odpowiedzi do “Operatory arytmetyczne w PHP”

  1. Piotr pisze:

    Mi wychodzi 8

  2. olsza pisze:

    w tabeli masz bÅ‚Ä…d w ostatnim wierszu, jest jeden minus, a powinno być dwa czyli „dekrementacja $a–(odejmuje od zmiennej wartość 1)” i w tym zdaniu też powinny być dwa minusy za $a

  3. !Leszek Sewastianowicz pisze:

    Dzięki za uwagę. Tak naprawdę były dwa minusy. Nie wiem dlaczego przeglądarka połączyła je w jeden. Dopiero zamiana minusów na encje dała zadowalający efekt.

  4. ijoda pisze:

    Aleś wymyślił! Liczyłem 5 razy. Raz wyszło 46, raz 52, dwa razy 57 i raz się pogubiłem kompletnie.

  5. evelin pisze:

    Hej.
    Czy to 39?

  6. !Leszek Sewastianowicz pisze:

    Widzę, że macie problemy. Wyjaśnienie zadania w następnym artykule.
    Pozdrawiam wszystkich liczÄ…cych :)

  7. adam pisze:

    wydaje mi się, że 56 :)

  8. adam pisze:

    oj, jednak nie… ;]

Dodaj odpowiedź

Musisz się zalogować aby dodać komentarz.