cvs: phpdoc-ru /language expressions.xml

From: Date: Wed, 11 Feb 2004 11:58:30 +0000
Subject: cvs: phpdoc-ru /language expressions.xml
Groups: php.doc.ru 
Request: Send a blank email to doc-ru+get-203@lists.php.net to get a copy of this message
kai Wed Feb 11 06:58:30 2004 EDT Added files: /phpdoc-ru/language expressions.xml Log: Translated

http://cvs.php.net/co.php/phpdoc-ru/language/expressions.xml?r=1.1&p=1 Index: phpdoc-ru/language/expressions.xml +++ phpdoc-ru/language/expressions.xml <?xml version="1.0" encoding="windows-1251"?> <!-- EN-Revision: 1.25 Maintainer: Kai Status: ready --> <!-- $Revision: 1.1 $ --> <chapter id="language.expressions"> <title>Âûðàæåíèÿ</title> <simpara> Âûðàæåíèÿ - ýòî êðàåóãîëüíûé êàìåíü PHP. Ïî÷òè âñå, ÷òî âû ïèøèòå â PHP, ÿâëÿåòñÿ âûðàæåíèåì. Ñàìîå ïðîñòîå è òî÷íîå îïðåäåëåíèå âûðàæåíèÿ - "âñå ÷òî óãîäíî, èìåþùåå çíà÷åíèå". </simpara> <simpara> Îñíîâíûìè ôîðìàìè âûðàæåíèé ÿâëÿþòñÿ êîíñòàíòû è ïåðåìåííûå. Åñëè âû çàïèñûâàåòå "$a = 5", âû ïðèñâàèâàåòå '5' ïåðåìåííîé $a. '5', î÷åâèäíî, èìååò çíà÷åíèå 5 èëè, äðóãèìè ñëîâàìè, '5' ýòî âûðàæåíèå ñî çíà÷åíèåì 5 (â äàííîì ñëó÷àå '5' ýòî öåëî÷èñëåííàÿ êîíñòàíòà). </simpara> <simpara> Ïîñëå ýòîãî ïðèñâîåíèÿ âû îæèäàåòå, ÷òî çíà÷åíèåì $a òàêæå ÿâëÿåòñÿ 5, ïîýòîìó, åñëè âû íàïèñàëè $b = $a, âû ïîëàãàåòå, ÷òî ðàáîòàòü ýòî áóäåò òàê æå, êàê åñëè áû âû íàïèñàëè $b = 5. Äðóãèìè ñëîâàìè, $a ýòî òàêæå âûðàæåíèå ñî çíà÷åíèåì 5. Åñëè âñå ðàáîòàåò âåðíî, òî èìåííî òàê è ïðîèçîéäåò. </simpara> <para> Íåìíîãî áîëåå ñëîæíûìè ïðèìåðàìè âûðàæåíèé ÿâëÿþòñÿ ôóíêöèè. Íàïðèìåð, ðàññìîòðèì ñëåäóþùóþ ôóíêöèþ: <informalexample> <programlisting role="php"> <![CDATA[ <?php function foo () { return 5; } ?> ]]> </programlisting> </informalexample> </para> <simpara> Èñõîäÿ èç òîãî, ÷òî âû õîðîøî çíàêîìû ñ êîíöåïöèåé ôóíêöèé (åñëè íåò, òî ïðî÷èòàéòå ãëàâó î ôóíêöèÿõ), âû ïîëàãàåòå, ÷òî çàïèñü <literal>$c = foo()</literal> àáñîëþòíî ýêâèâàëåíòà çàïèñè <literal>$c = 5</literal>, è âû ïðàâû. Ôóíêöèè - ýòî âûðàæåíèÿ, çíà÷åíèåì êîòîðûõ ÿâëÿåòñÿ òî, ÷òî âîçâðàùàåò ôóíêöèÿ. Ïîñêîëüêó foo() âîçâðàùàåò 5, çíà÷åíèåì âûðàæåíèÿ 'foo()' ÿâëÿåòñÿ 5. Êàê ïðàâèëî, ôóíêöèè íå âîçâðàùàþò ïðîñòî ñòàòè÷åñêîå çíà÷åíèå, à ÷òî-òî âû÷èñëÿþò. </simpara> <simpara> Ðàçóìååòñÿ, çíà÷åíèÿ â PHP íå îáÿçàíû áûòü öåëî÷èñëåííûìè, è î÷åíü ÷àñòî èìè íå ÿâëÿþòñÿ. PHP ïîääåðæèâàåò òðè òèïà ñêàëÿðíûõ çíà÷åíèé: öåëî÷èñëåííûå, ñ ïëàâàþùåé òî÷êîé è ñòðîêîâûå çíà÷åíèÿ (ñêàëÿðíûìè ÿâëÿþòñÿ çíà÷åíèÿ, êîòîðûå âû íå ìîæåòå 'ðàçáèòü' íà ìåíüøèå ÷àñòè, â îòëè÷èå, íàïðèìåð, îò ìàññèâîâ). PHP ïîääåðæèâàåò òàêæå äâà êîìáèíèðîâàííûõ (íå ñêàëÿðíûõ) òèïà: ìàññèâû è îáúåêòû. Êàæäûé èç ýòèõ òèïîâ çíà÷åíèé ìîæåò ïðèñâàèâàòüñÿ ïåðåìåííîé èëè âîçâðàùàòüñÿ ôóíêöèåé. </simpara> <simpara> Äî ñèõ ïîð ïîëüçîâàòåëè PHP/FI 2 íå äîëæíû áûëè ïî÷óâñòâîâàòü êàêèõ-ëèáî èçìåíåíèé. Îäíàêî PHP, êàê è ìíîãèå äðóãèå ÿçûêè, ïîíèìàåò ãîðàçäî áîëüøå âûðàæåíèé. PHP - ýòî ÿçûê, îðèåíòèðîâàííûé íà âûðàæåíèÿ è ðàññìàòðèâàþùèé ïî÷òè âñå êàê âûðàæåíèå. Âåðíåìñÿ ê ïðèìåðó, ñ êîòîðûì ìû óæå èìåëè äåëî: '$a = 5'. Ëåãêî çàìåòèòü, ÷òî çäåñü ïðèñóòñòâóþò äâà çíà÷åíèÿ - çíà÷åíèå öåëî÷èñëåííîé êîíñòàíòû '5' è çíà÷åíèå ïåðåìåííîé $a, òàêæå ïðèíèìàþùåé çíà÷åíèå 5. Íî íà ñàìîì äåëå çäåñü ïðèñóòñòâóåò è åùå îäíî çíà÷åíèå - çíà÷åíèå ñàìîãî ïðèñâîåíèÿ. Ñàìî ïðèñâîåíèå âû÷èñëÿåòñÿ â ïðèñâîåííîå çíà÷åíèå, â äàííîì ñëó÷àå - â 5. Íà ïðàêòèêå ýòî îçíà÷àåò, ÷òî '$a = 5', íåçàâèñèìî îò òîãî, ÷òî îíî äåëàåò, ÿâëÿåòñÿ âûðàæåíèåì ñî çíà÷åíèåì 5. Òàêèì îáðàçîì, çàïèñü '$b = ($a = 5)' ðàâíîñèëüíà çàïèñè '$a = 5; $b = 5;' (òî÷êà ñ çàïÿòîé îáîçíà÷àåò êîíåö âûðàæåíèÿ). Ïîñêîëüêó îïåðàöèè ïðèñâîåíèÿ àíàëèçèðóþòñÿ ñïðàâà íàëåâî, âû òàêæå ìîæåòå íàïèñàòü '$b = $a = 5'. </simpara> <simpara> Äðóãîé õîðîøèé ïðèìåð îðèåíòèðîâàííîñòè íà âûðàæåíèÿ - ïðå- è ïîñòôèêñíûé èíêðåìåíò è äåêðåìåíò. Ïîëüçîâàòåëè PHP/FI 2 è ìíîãèõ äðóãèõ ÿçûêîâ âîçìîæíî óæå çíàêîìû ñ ôîðìîé çàïèñè ïåðåìåííàÿ++ è ïåðåìåííàÿ--. Ýòî îïåðàòîðû èíêðåìåíòà è äåêðåìåíòà.  PHP/FI 2 îïåðàöèÿ '$a++' íå èìååò çíà÷åíèÿ (ýòî íå âûðàæåíèå), è, òàêèì îáðàçîì, âû íå ìîæåòå ïðèñâîèòü åå èëè êàêèì-ëèáî îáðàçîì èñïîëüçîâàòü. PHP óâåëè÷èâàåò âîçìîæíîñòè èíêðåìåíòà/äåêðåìåíòà, òàêæå ñäåëàâ èõ âûðàæåíèÿìè, êàê â C. Òàêæå êàê è C, PHP ïîääåðæèâàåò äâà òèïà èíêðåìåíòà - ïðåôèêñíûé è ïîñòôèêñíûé. Îíè îáà èíêðåìåíòèðóþò çíà÷åíèå ïåðåìåííîé è ýôôåêò èõ äåéñòâèÿ íà íåå îäèíàêîâ. Ðàçíèöà ñîñòîèò â çíà÷åíèè âûðàæåíèÿ èíêðåìåíòà. Ïðåôèêñíûé èíêðåìåíò, çàïèñûâàåìûé êàê '++$variable', âû÷èñëÿåòñÿ â èíêðåìåíòèðîâàííîå çíà÷åíèå (PHP èíêðåìåíòèðóåò ïåðåìåííóþ ïåðåä òåì êàê ïðî÷åñòü åå çíà÷åíèå, îòñþäà íàçâàíèå 'ïðå-èíêðåìåíò'). Ïîñòôèêñíûé èíêðåìåíò, çàïèñûâàåìûé êàê '$variable++', âû÷èñëÿåòñÿ â ïåðâîíà÷àëüíîå çíà÷åíèå ïåðåìåííîé $variable ïåðåä åå ïðèðàùåíèåì (PHP èíêðåìåíòèðóåò ïåðåìåííóþ ïîñëå ïðî÷òåíèÿ åå çíà÷åíèÿ, îòñþäà íàçâàíèå 'ïîñò-èíêðåìåíò'). </simpara> <simpara> Î÷åíü ðàñïðîñòðàíåííûì òèïîì âûðàæåíèé ÿâëÿþòñÿ âûðàæåíèÿ ñðàâíåíèÿ. Îíè âû÷èñëÿþòñÿ â 0 èëè 1, îçíà÷àþùèõ ñîîòâåòñòâåííî &false; (ëîæü) èëè &true; (èñòèíó). PHP ïîääåðæèâàåò &gt; (áîëüøå), &gt;= (áîëüøå ëèáî ðàâíî), == (ðàâíî), != (íå ðàâíî), &lt; (ìåíüøå) è &lt;= (ìåíüøå ëèáî ðàâíî). ßçûê òàêæå ïîääåðæèâàåò îïåðàòîðû ñòðîãîãî ðàâåíñòâà: === (ðàâíî è îäíîãî òèïà) è !== (íå ðàâíî èëè íå îäíîãî òèïà). ×àùå âñåãî ýòè âûðàæåíèÿ èñïîëüçóþòñÿ â óñëîâèÿõ âûïîëíåíèÿ îïåðàòîðîâ, òàêèõ êàê <literal>if</literal>. </simpara> <simpara> Ïîñëåäíèé ïðèìåð âûðàæåíèé, êîòîðûé ìû çäåñü ðàññìîòðèì, ýòî ñìåøàííûå âûðàæåíèÿ îïåðàöèè è ïðèñâîåíèÿ. Âû óæå çíàåòå, ÷òî åñëè âû õîòèòå óâåëè÷èòü $a íà 1, âû ìîæåòå ïðîñòî íàïèñàòü '$a++' èëè '++$a'. Íî ÷òî, åñëè âû õîòèòå ïðèáàâèòü áîëüøå, ÷åì åäèíèöó, íàïðèìåð, 3? Âû ìîãëè áû íàïèñàòü '$a++' ìíîãî ðàç, îäíàêî, î÷åâèäíî ýòî íå î÷åíü ðàöèîíàëüíûé èëè óäîáíûé ñïîñîá. Ãîðàçäî áîëåå ðàñïðîñòðàíåííîé ïðàêòèêîé ÿâëÿåòñÿ çàïèñü âèäà '$a = $a + 3'. '$a + 3' âû÷èñëÿåòñÿ â çíà÷åíèå $a ïëþñ 3 è ñíîâà ïðèñâàèâàåòñÿ $a, óâåëè÷èâàÿ â ðåçóëüòàòå $a íà 3.  PHP, êàê è â íåêîòîðûõ äðóãèõ ÿçûêàõ, òàêèõ êàê C, âû ìîæåòå çàïèñàòü ýòî áîëåå êîðîòêèì îáðàçîì, ÷òî óâåëè÷èò î÷åâèäíîñòü ñìûñëà è áûñòðîòó ïîíèìàíèÿ êîäà ïî ïðîøåñòâèè âðåìåíè. Ïðèáàâèòü 3 ê òåêóùåìó çíà÷åíèþ $a ìîæíî ñ ïîìîùüþ çàïèñè '$a += 3'. Ýòî îçíà÷àåò äîñëîâíî "âçÿòü çíà÷åíèå $a, ïðèáàâèòü ê íåìó 3 è ñíîâà ïðèñâîèòü åãî ïåðåìåííîé $a". Êðîìå áîëüøåé ïîíÿòíîñòè è êðàòêîñòè, ýòî áûñòðåå ðàáîòàåò. Çíà÷åíèåì '$a += 3', êàê è îáû÷íîãî ïðèñâîåíèÿ, ÿâëÿåòñÿ ïðèñâîåííîå çíà÷åíèå. Îáðàòèòå âíèìàíèå, ÷òî ýòî ÍÅ 3, à ñóììèðîâàííîå çíà÷åíèå $a ïëþñ 3 (òî, ÷òî áûëî ïðèñâîåíî $a). Òàêèì îáðàçîì ìîæåò èñïîëüçîâàòüñÿ ëþáîé äâóõìåñòíûé îïåðàòîð, íàïðèìåð, '$a -= 5' (âû÷åñòü 5 èç çíà÷åíèÿ $a), '$b *= 7' (óìíîæèòü çíà÷åíèå $b íà 7) è ò.ä. </simpara> <para> Ñóùåñòâóåò åùå îäíî âûðàæåíèå, êîòîðîå ìîæåò âûãëÿäåòü íåîáû÷íûì, åñëè âû íå âñòðå÷àëè åãî â äðóãèõ ÿçûêàõ - òåðíàðíûé óñëîâíûé îïåðàòîð: </para> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php $first ? $second : $third ?> ]]> </programlisting> </informalexample> </para> <para> Åñëè çíà÷åíèåì ïåðâîãî ïîäâûðàæåíèÿ ÿâëÿåòñÿ &true; (íå íîëü), âûïîëíÿåòñÿ âòîðîå ïîäâûðàæåíèå, êîòîðîå è áóäåò ðåçóëüòàòîì óñëîâíîãî âûðàæåíèÿ.  ïðîòèâíîì ñëó÷àå, áóäåò âûïîëíåíî òðåòüå ïîäâûðàæåíèå è åãî çíà÷åíèå áóäåò ðåçóëüòàòîì. </para> <para> Ñëåäóþùèé ïðèìåð äîëæåí ïîìî÷ü âàì íåìíîãî óëó÷øèòü ïîíèìàíèå ïðåôèêñíîãî è ïîñòôèêñíîãî èíêðåìåíòà è âûðàæåíèé: </para> <para> <informalexample> <programlisting role="php"> <![CDATA[ <?php function double($i) { return $i*2; } $b = $a = 5; /* ïðèñâîèòü çíà÷åíèå ïÿòü ïåðåìåííûì $a è $b */ $c = $a++; /* ïîñòôèêñíûé èíêðåìåíò, ïðèñâîèòü çíà÷åíèå $a (5) ïåðåìåííîé $c */ $e = $d = ++$b; /* ïðåôèêñíûé èíêðåìåíò, ïðèñâîèòü óâåëè÷åííîå çíà÷åíèå $b (6) ïåðåìåííûì $d è $e */ /* â ýòîé òî÷êå è $d, è $e ðàâíû 6 */ $f = double($d++); /* ïðèñâîèòü óäâîåííîå çíà÷åíèå $d ïåðåä èíêðåìåíòîì (2*6 = 12) ïåðåìåííîé $f */ $g = double(++$e); /* ïðèñâîèòü óäâîåííîå çíà÷åíèå $e ïîñëå èíêðåìåíòà (2*7 = 14) ïåðåìåííîé $g */ $h = $g += 10; /* ñíà÷àëà ïåðåìåííàÿ $g óâåëè÷èâàåòñÿ íà 10, ïðèîáðåòàÿ, â èòîãå, çíà÷åíèå 24. Çàòåì çíà÷åíèå ïðèñâîåíèÿ (24) ïðèñâàèâàåòñÿ ïåðåìåííîé $h, êîòîðàÿ â èòîãå òàêæå ñòàíîâèòñÿ ðàâíîé 24. */ ?> ]]> </programlisting> </informalexample> </para> <simpara>  íà÷àëå ãëàâû ìû ãîâîðèëè, ÷òî ðàññìîòðèì ðàçëè÷íûå òèïû èíñòðóêöèé, êàê ìû è îáåùàëè, âûðàæåíèÿ ìîãóò áûòü èíñòðóêöèÿìè. Îäíàêî íå êàæäîå âûðàæåíèå ÿâëÿåòñÿ èíñòðóêöèåé.  äàííîì ñëó÷àå èíñòðóêöèÿ èìååò âèä 'âûðàæåíèå' ';' - âûðàæåíèå ñ ïîñëåäóþùåé òî÷êîé ñ çàïÿòîé.  çàïèñè '$b=$a=5;', $a=5 - ýòî âåðíîå âûðàæåíèå, íî ñàìî ïî ñåáå íå èíñòðóêöèÿ. Òîãäà êàê '$b=$a=5;' ÿâëÿåòñÿ âåðíîé èíñòðóêöèåé. </simpara> <simpara> Ïîñëåäíåå, ÷òî ñòîèò óïîìÿíóòü, ýòî èñòèííîñòü çíà÷åíèÿ âûðàæåíèé. Âî ìíîãèõ ñëó÷àÿõ, êàê ïðàâèëî, â óñëîâíûõ îïåðàòîðàõ è öèêëàõ, âàñ ìîæåò èíòåðåñîâàòü íå êîíêðåòíîå çíà÷åíèå âûðàæåíèÿ, à òîëüêî çíà÷àò ëè îíè &true; èëè &false;. <!-- (PHP doesn't have a dedicated boolean type) : WRONG, PHP does. --> Êîíñòàíòû &true; è &false; (ðåãèñòðî-íåçàâèñèìûå) - ýòî äâà âîçìîæíûõ áóëåâûõ çíà÷åíèÿ. Ïðè íåîáõîäèìîñòè âûðàæåíèå àâòîìàòè÷åñêè ïðåîáðàçóåòñÿ â áóëåâ òèï. Ïîäðîáíåå î òîì, êàê ýòî ïðîèñõîäèò, ñìîòðèòå â <link linkend="language.types.typecasting">ðàçäåëå î ïðèâåäåíèè òèïîâ</link>. </simpara> <simpara> PHP ïðåäîñòàâëÿåò ïîëíóþ è ìîùíóþ ðåàëèçàöèþ âûðàæåíèé, è èõ ïîëíîå äîêóìåíòèðîâàíèå âûõîäèò çà ðàìêè ýòîãî ðóêîâîäñòâà. Âûøåïðèâåäåííûå ïðèìåðû äîëæíû äàòü âàì ïðåäñòàâëåíèå î òîì, ÷òî îíè èç ñåáÿ ïðåäñòàâëÿþò è êàê âû ñàìè ìîæåòå ñîçäàâàòü ïîëåçíûå âûðàæåíèÿ. Äàëåå, äëÿ îáîçíà÷åíèÿ ëþáîãî âåðíîãî âûðàæåíèÿ PHP â ýòîé äîêóìåíòàöèè ìû áóäåì èñïîëüçîâàòü ñîêðàùåíèå <replaceable>expr</replaceable>. </simpara> </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->
« previous php.doc.ru (#203) next »