Wpisy otagowane ‘modulo’

Operatory arytmetyczne w PHP

sobota, 1 Grudzień 2012

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;
?>