Kurz PHP (3.)

Práce s čísly a textem

Při práci s čísly se nám budou hodit matematické operátory. Základní matematické operátory jsou sčítání '+', odčítání '-', dělení ':' a násobení '*') - předpokládám, že je každý zná ze základní školy.


Základní matematické operace

Mezi základní matematické operace patří již zmíněné sčítání, odčítání, násobení a dělení. V jazyce PHP to bude vypadat následovně.


<?
// proměnné $a přiřadíme hodnotu 10
$a = 10;

// proměnné $b přiřadíme hodnotu 5
$b = 5;

/* Základní matematické operace. */
echo $a + $b;    // sčítání

echo "<br>";  // nový řádek

echo $a - $b;    // odečítání

echo "<br>";

echo $a * $b;    // násobení

echo "<br>";

echo $a / $b;    // dělení

?>

Toto jsou základní matematické operace, nyní si ukážeme další způsoby.


Pokročilejší matematické a textové operace

Často se nám může stát, že k nějaké proměnné budeme chtít přičíst hodnotu. Můžeme tak učinit pomocí následujícího kódu:

$a = $a + $b;

nebo můžeme použít "rychlejší" způsob zápisu:

$a += $b;

Oba tyto příklady mají shodnou funkci, liší se jen způsobem zápisu. Spojovat text a proměnné můžeme pomocí znaménka '.' (tečky). Většinu možností ukazuje tabulka.

Normální způsob Zjednodušený způsob
$a = $a + $b; $a += $b;
$a = $a - $b; $a += $b;
$a = $a * $b; $a *= $b;
$a = $a / $b; $a /= $b;
$a = $a . $b; $a .= $b;


Při zvětšení hodnoty proměnné o jedničku můžeme také využít tvz. pre a post inkrementace či dekrementace:

$a = $a + 1;

nebo použijeme kratší verzi:

++$a;

Občas se můžete setkat také s následujícím způsobem:

$a++;

Rozdíl mezi těmito způsoby (++$a, $a++) je následující. V prvním případě využijeme tzv. preinkrementace - nejprve zvětšíme hodnotu proměnné $a o jedničku a poté vrátíme její hodnotu. V druhém případě využijeme tzv. postinkrementace, kdy se nejprve vrátí hodnota proměnné $a a poté se k ní přičte jednička. Stejné operace (++$a, $a++) můžeme provádět i s opačným znaménkem, což se nazývá dekrementace (--$a,$a--). Vše si ukážeme na příkladě:


<?
// proměnné $a přiřadíme hodnotu 5
$a = 5;

/* 
Preinkrementace - zvětší hodnotu proměnné $a o 1 a
vrátí její hodnotu.
*/
echo ++$a; // vrátí hodnotu 6

echo "<br>";

// proměnné $a přiřadíme hodnotu 5
$a = 5;


/* 
Postinkrementace - vrátí hodnotu proměnné $a a poté ji zvětší o 1
*/
echo $a++; // vrátí hodnotu 5
echo "<br>";
echo $a;   // vrátí hodnotu 6
?>


Mezi další matematický operátor patří tzv. zbytek po dělení %. Pomocí tohoto operátoru můžeme určit zbytek po dělení dvou čísel. Vše si ukážeme na příkladě.


<?
// proměnné $a přiřadíme hodnotu 7
$a = 7;

// proměnné $b přiřadíme hodnotu 3
$b = 3;

// nyní vypíšeme zbytek po dělení čísla 7 číslem 3 - výsledek bude 1
echo $a % $b;
?>


Logické operátory

Logické operátory využijeme při rozhodování, zda se nachází v proměnné určitá hodnota nebo když se například hodnoty proměnných rovnají. Následující tabulka obsahuje seznam logických operátorů. Tyto operátory využijeme v řídících strukturách, o kterých si povíme v dalším odstavci.

Příklad Název Výsledek
$a and $b And Vrací hodnotu TRUE, když $a a $b (obě zároveň) mají hodnotu TRUE.
$a or $b Or Vrací hodnotu TRUE, když $a nebo $b má hodnotu TRUE.
$a xor $b Xor Vrací hodnotu TRUE, když $a nebo $b má hodnotu TRUE, ale ne obě současně.
! $a Not Vrací hodnotu TRUE, když $a nemá hodnotu TRUE.
$a && $b And Vrací hodnotu TRUE, když $a a $b (obě zároveň) mají hodnotu TRUE.
* $a || $b Or Vrací hodnotu TRUE, když $a nebo $b má hodnotu TRUE.
* Znak ' | ' můžeme napsat stisknutím pravého Altu a w (Alt + W).


Priorita operátorů

V následující tabulce je uvedena priorita operátorů.

Nižší priorita Asociativita Operátory
levá ,
levá or
levá xor
levá and
pravá print
levá = += -= *= /= .= %= &= |= ^= ~= <<= >>=
levá ? :
levá ||
levá &&
Vyšší priorita levá |
levá ^
levá &
bez asociativity == != === !==
bez asociativity < <= > >=
levá << >>
levá + - .
levá * / %
pravá ! ~ ++ -- (int) (double) (string) (array) (object) @
pravá [
bez asociativity new


Řídící struktury

Řídící struktury použijeme v případě, když budeme chtít například porovnat dvě proměnné - umožňují podmíněné provádění části kódu.


Ternární operátor

Mezi nejznámější operátory porovnávání patří tzv. Ternární operátor. Jeho syntaxe je velice jednoduchá.


< podmínka > ? < příkaz 1> :  < příkaz 2>;

Pokud vrátí podmínka hodnotu TRUE (pravda), bude proveden příkaz 1 a v případě hodnoty FALSE (nepravda), bude proveden příkaz 2. Ukázku si předvedeme na příkladě:


<?
// proměnné $a přiřadíme hodnotu 5
$a = 5;

// podmínka zda má proměnná $a hodnotu 5
echo ($a == 5) ? "Proměnná má hodnotu 5" : "Proměnná nemá hodnotu 5";
?>


If

Jedná se o základní typ "porovnávací konstrukce". Jeho syntaxe je následující:


if (< podmínka >) < příkaz >;

Případně při použití více příkazů můžeme použít složené závorky:


if (< podmínka >)
{
	< příkaz >;
	< další příkaz >;
}

Nyní si ukážeme ukázkový příklad, který porovná hodnotu proměnné $a a pokud tato hodnota bude 5, vypíše krátké hlášení.


<?
$a = 5;

if ($a == 5) echo "Proměnná \$a má hodnotu 5 !";
?>

Případně můžeme použít následující verzi:


<?
$a = 5;

if ($a == 5)
{
	echo "Proměnná \$a má hodnotu 5 !";
	echo "<br>";
	echo "Není to úžasné?";
}

?>


Else

Když budeme chtít provést určitý příkaz i v případě, když nebude vyhovovat podmínka, použijeme příkaz else (opět můžeme zadávát do složených závorek). Vše si ukážeme na příkladě:


<?
$a = 5;

if ($a == 4)
{
	echo "Proměnná \$a má hodnotu 5 !";
	echo "<br>";
	echo "Není to úžasné?";
}
else
{
	echo "Proměnná \$a nemá hodnotu 5";
}

?>


Elseif

Tuto variantu větvení využijeme tehdy, pokud budeme chtít například kontrolovat určitou proměnnou na více hodnot. Syntaxe je podobná jako u If (do závorek doplníme podmínku):


<?
$a = 5;

if ($a == 4)
{
	echo "Proměnná \$a nemá hodnotu 5";
	echo "<br>";
	echo "Proměnná \$a má následující hodnotu: $a";
}
elseif ($a == 5)
{
	echo "Proměnná \$a má hodnotu 5 !";
	echo "<br>";
	echo "Není to úžasné?";
}
else
{
	echo "Proměnná \$a nemá hodnotu 5";
}
?>

V řídících strukturách můžeme uchovávat také části HTML kódu - PHP kód uzavřeme do značek <? a ?>:


<?
$a = 5;

if ($a == 5)
{
	?>
	  <table border="1">
	   <tr>
		<td>Testovací vypsání HTML kódu</td>
	   </tr>
	 </table>
	<?
}

?>


Switch

Tato řídící struktura je velice podobná konstrukci If..Elseif...Else, můžete ji využít například tehdy, když budete chtít porovnat hodnotu nějaké proměnné. Základní syntaxe je následující


Switch (< proměnná >)
{
	case "< první hodnota >":
		< příkazy k provedení >
	break; // ukončení první hodnoty
	
	case "< druhá hodnota >":
		< příkazy k provedení >
	break; // ukončení druhé hodnoty
	
	.... // možnost vložení dalších hodnot
	
	default:
		< příkazy k provedení, když se proměnná 
		  nebude rovnat žádné hodnotě >
}

Proměnná je porovnávána na hodnoty a v případě, že žádná hodnota nebude shodná, vyhodnotí se příkazy za default:. Viz. příklad:


<?
$a = 5;

Switch ($a)
{
	case 3:
		echo "Proměnná \$a má hodnotu 3.";
	break;
	
	case 4:
		echo "Proměnná \$a má hodnotu 4.";
	break;
	
	case 5:
		echo "Proměnná \$a má hodnotu 5.";
	break;
	
	default:
		echo "Proměnná \$a má neznámnou hodnotu !";
}

?>

Pomocí této konstrukce můžeme provádět i více možností (case) se společným příkazem.


<?
$a = 5;

Switch ($a)
{
	case 3:
	case 4:
	case 5:
		echo "Proměnná \$a má hodnotu 3, 4 nebo 5.";
	break;
	
	default:
		echo "Proměnná \$a má neznámnou hodnotu !";
}

?>


Pro tento díl to bude vše. V příštím díle si povíme, co jsou to cykly.

Petr Rympler