PHP: Âûðàæåíèÿ
Àâòîð: | Àðòåìüåâ Ñåðãåé Èãîðåâè÷ |
ICQ: | 438856621 |
email: | _spin_@bk.ru |
Âûðàæåíèÿ â PHP - îäèí èç îñíîâîïîëàãàþùèõ ýëåìåíòîâ. Âñ¸, ÷òî âû ïèøåòå - ýòî âûðàæåíèÿ. Èíûìè ñëîâàìè, âûðàæåíèå - ýòî âñ¸, ÷òî èìååò çíà÷åíèå. Äëÿ ïðàêòè÷åñêîé ðàáîòû î÷åíü âàæíî ïîíèìàòü êàê ïðèíöèïû ïîñòðîåíèÿ âûðàæåíèé òàê è òî, êàê èõ àíàëèçèðóåò è èñïîëíÿåò PHP.
Ñàìîå ïðîñòîå âûðàæåíèå â PHP - ïðèñâîåíèå çíà÷åíèÿ.
$var = 'value';
Ýòî âûðàæåíèå ÷èòàåòñÿ êàê "ïåðåìåííîé ñ èìåíåì $var ïðèñâîèòü çíà÷åíèå 'value'" èëè "äëÿ ïåðåìåííîé ñ èìåíåì $var óñòàíîâèòü çíà÷åíèå 'value'".
Âñå âûðàæåíèÿ â PHP äîëæíû çàâåðøàòüñÿ òî÷êîé ñ çàïÿòîé, à ÷àñòè âûðàæåíèÿ ðàçäåëàþòñÿ îïåðàòîðàìè. Åñëè òî÷êè ñ çàïÿòîé èëè îïåðàòîðà íåò - êîìïèëÿòîð âûäàñò îøèáêó.
 îáùåì âèäå ïðîñòûå âûðàæåíèÿ PHP ìîæíî ïðåäñòàâèòü â âèäå ñõåìû:
<îïåðàòîð> <ïåðåìåííàÿ> <îïåðàòîð> <çíà÷åíèå> <;>
 âûðàæåíèÿõ PHP, ñòðîãî ãîâîðÿ, âñå ýëåìåíû ÿâëÿþòñÿ íåîáÿçàòåëüíûìè, êðîìå òî÷êè ñ çàïÿòîé. Íî åñëè êàêîé-òî ýëåìåíò åñòü, òî äîëæíû áûòü è âñå ýëåìåíû, êîòîðûå äîëæíû áûòü ïî ñõåìå ñëåâà.
Íàïðèìåð, âñå ýòè âûðàæåíèÿ äîïóñòèìû (õîòÿ è íå âñå èìåþò ñìûñë):
<?php ; // ïóñòîé îïåðàòîð $var1; $var1++; $var1 = 'value'; ?>
Ìîæíî ïèñàòü â îäíó ñòðîêó ìíîæåñòâî âûðàæåíèé, ïðîñòî ðàçäåëÿÿ èõ òî÷êîé ñ çàïÿòîé. Íàïðèìåð, ñëåäóþùèå äâà áëîêà ñîâåðøåííî îäèíàêîâû ñ òî÷êè çðåíèÿ PHP:
<?php $var1 = 'âàñÿ'; $var2 = 'ïåòÿ'; $var3 = 'êîëÿ'; ?> <?php $var1 = 'âàñÿ'; $var2 = 'ïåòÿ'; $var3 = 'êîëÿ'; ?>
À ýòà ñòðîêà âûçîâåò îøèáêó. Èíòåðïðåòàòîð íå cìîæåò ïðàâèëüíî îïðåäåëèòü ãðàíèöû è áóäåò ñ÷èòàòü âñþ ñòðîêó îäíèì íåêîððåêòíûì âûðàæåíèåì, ò.ê. íåò îïåðàòîðîâ-ðàçäåëèòåëåé ìåæäó îòäåëüíûìè áëîêàìè.
<?php $var1 = 'âàñÿ' $var2 = 'ïåòÿ' $var3 = 'êîëÿ' ?>
Âàæíîå ñâîéñòâî âûðàæåíèé - âîçìîæíîñòü âñòðàèâàíèÿ èõ îäíî â äðóãîå. Ò.å. âûðàæåíèå ìîæåò áûòü ÷àñòüþ äðóãîãî, áîëåå êðóïíîãî, âûðàæåíèÿ, íàïðèìåð, ôðàãìåíò
<?php $n = 'Âàñÿ'; $f = ' Èâàíîâ'; $result = $n . $f; echo $result; ?>
ïîëíîñòüþ àíàëîãè÷åí ýòîìó ôðàãìåíòó
<?php $result = ($n = 'Âàñÿ') . ($f = ' Èâàíîâ'); echo $result; ?>
Îïåðàòîð "." (òî÷êà) èñïîëüçóåòñÿ â PHP äëÿ îáúåäèíåíèÿ äâóõ ñòðîê â îäíó.
Ñîñòàâíûå âûðàæåíèÿ èíòåðïðåòàòîð àíàëèçèðóåò, âûáèðàåò íàèáîëåå ãëóáîêî âëîæåíûå âûðàæåíèÿ è âûïîëíÿåò èõ. Ïîñëå ýòîãî ïîäñòàâëÿåò ðåçóëüòàòû â áîëåå êðóïíîå âûðàæåíèå, âû÷èñëÿò èõ è ò.ä, ïîêà íå áóäåò âû÷èñëåíî âñ¸ âûðàæåíèå.
Ïîñëåäîâàòåëüíîñòü âûïîëíåíèÿ âûðàæåíèé îäíîãî óðîâíÿ îïðåäåëÿåòñÿ ñòàðøèíñòâîì (ïðèîðèòåòîì) îïåðàòîðîâ, èñïîëüçóåìûõ â âûðàæåíèÿõ. Ñòàðøèíñòâî îïåðàòîðîâ PHP ìû ïîäðîáíî ðàññìîòðèì â íà÷àëå ñëåäóþùåé ãëàâû. Ñòðîãî ãîâîðÿ, ïî÷òè ïîëîâèíó ìàòåðèàëà âû óæå çíàåòå èç øêîëüíîãî êóðñà ìàòåìàòèêè :).
Íàïðèìåð, ïðè âûïîëíåíèè êîäà
$k = 3; $n = (($f = 1000/$k + 3) > 100); echo $n;
PHP ñëåäàåò ñëåäóþùèå øàãè:
- Øàã 1: $k = 3;
- Øàã 2: $t1 = 1000/$k
- Øàã 3: $t2 = $t1 + 3
- Øàã 4: $f = $t2
- Øàã 5: $t3 = ($f > 100)
- Øàã 6: $n = $t3
- Øàã 7: echo $n
Âñå âûðàæåíèÿ PHP ðàçäåëÿþòñÿ íà äâå áîëüøèõ ãðóïïû (ïî òèïó çíà÷åíèé): ñêàëÿðíûå è êîìïëåêñíûå. Ê ñêàëÿðíûì çíà÷åíèÿì îòíîñÿòñÿ òîëüêî òå, êîòîðûå íåëüçÿ "ðàçîáðàòü" íà îñìûñëåííûå ñîñòàâëÿþùèå. Ïðèìåð ñêàëÿðíîãî çíà÷åíèÿ - ñòðîêà. Êîíå÷íî, ìîæíî ðàçäåëèòü ñòðîêó íà îòäåëüíûå ñèìâîëû, íî ýòî óæå áóäåò íå ñòðîêà, à áåññìûñëåííûé íàáîð ñèìâîëîâ.
Ñêàëÿðíûå çíà÷åíèÿ ïîäðàçäåëÿþòñÿ íà öåëî÷èñëåííûå, ÷èñëîâûå ñ ïëàâàþùåé òî÷êîé, ñòðîêîâûå è ëîãè÷åñêèå.Îñîáåííîñòè ðàáîòû PHP ñ ðàçëè÷íûìè òèïàìè çíà÷åíèé ìû ðàññìîòðèì â ñëåäóþùåì óðîêå.
Ïðèìåðû ñêàëÿðíûõ âûðàæåíèé:
// ñòðîêîâûå $str = 'ÿ - ñòðîêà'; $str .= ' PHP'; // öåëî÷èñëåííûå $k = 3; $k += 10; // ÷èñëîâûå ñ ïëàâàþùåé òî÷êîé $float = 11.23; $otherFloat = $float/100; // ëîãè÷åñêèå $x == $y; $z > 100;
Êîìïëåêñíûå âûðàæåíèÿ ìîãóò áûòü ðàçäåëåíû íà ÷àñòè òàê, ÷òî êàæäàÿ ÷àñòü áóäåò èìåòü êàêîé-òî ñìûñë. Òàêèõ âûðàæåíèé â PHP 2: ìàññèâû è îáúåêòû, íî î íèõ ìû ïîãîâîðèì â ñîîòâåòñòâóþùèõ óðîêàõ.