cvs: phpdoc /cs/language control-structures.xml variables.xml
| From: | Lukas Jelinek | Date: | Fri, 26 Apr 2002 20:35:28 +0000 |
| Subject: | cvs: phpdoc /cs/language control-structures.xml variables.xml | ||
| Groups: | php.doc | ||
| Request: | Send a blank email to phpdoc+get-969344923@lists.php.net to get a copy of this message | ||
luk Fri Apr 26 16:35:28 2002 EDT
Added files:
/phpdoc/cs/language variables.xml
Modified files:
/phpdoc/cs/language control-structures.xml
Log:
Index: phpdoc/cs/language/control-structures.xml diff -u phpdoc/cs/language/control-structures.xml:1.4 phpdoc/cs/language/control-structures.xml:1.5 --- phpdoc/cs/language/control-structures.xml:1.4 Thu Apr 25 17:58:13 2002 +++ phpdoc/cs/language/control-structures.xml Fri Apr 26 16:35:27 2002 @@ -854,27 +854,25 @@ <link linkend="control-structures.declare.ticks">ticks</link>) </para> <para> - The <literal>statement</literal> part of the - <literal>declare</literal> block will be executed - how - it is executed and what side-effects occur during execution - may depend on the directive set in the - <literal>directive</literal> block. + Èást <literal>statement</literal> bloku <literal>declare</literal> + bude provedena - jak bude provedena a jaké vedlej¹í efekty nastanou + bìhem provádìní mù¾e zále¾et na direktivì nastavené v bloku + <literal>directive</literal>. </para> <sect2 id="control-structures.declare.ticks"> <title>Ticks</title> - <para>A tick is an event that occurs for every - <replaceable>N</replaceable> low-level statements executed - by the parser within the <literal>declare</literal> block. - The value for <replaceable>N</replaceable> is specified - using <literal>ticks=<replaceable>N</replaceable></literal> - within the <literal>declare</literal> blocks's - <literal>directive</literal> section. + <para>Tick je událost, která nastane pro ka¾dých + <replaceable>N</replaceable> nízkoúrovòových konstruktù provedených + parserem uvnitø bloku <literal>declare</literal>. Hodnota + <replaceable>N</replaceable> je specifikována pomocí + <literal>ticks=<replaceable>N</replaceable></literal> uvnitø sekce + <literal>directive</literal> bloku <literal>declare</literal>. </para> <para> - The event(s) that occurs on each tick is specified using the - <function>register_tick_function</function>. See the example - below for more details. Note that more than one event can occur - for each tick. + Událost(i), která nastane pøi ka¾dém ticku, se specifikuje pomocí + <function>register_tick_function</function>. Více podrobností - viz + pøíklad ní¾e. Uvìdomte si, ¾e na ka¾dý tick mù¾e nastat více ne¾ jedna + událost. </para> <para> <example> Index: phpdoc/cs/language/variables.xml +++ phpdoc/cs/language/variables.xml <?xml version="1.0" encoding="iso-8859-2"?> <!-- EN-Revision: 1.45 Maintainer: luk Status: mixed --> <chapter id="language.variables"> <title>Promìnné</title> <sect1 id="language.variables.basics"> <title>Základy</title> <simpara> Promìnné jsou v PHP reprezentovány znakem dolaru, následovaným názvem pøíslu¹né promìnné. V názvech promìnných se rozli¹uje velikost písmen. </simpara> <para> Názvy promìnných jsou podøízeny stejným pravidlùm jako jiná návì¹tí v PHP. Platný název promìnné zaèíná písmenem nebo podtr¾ítkem, následovaným libovolným poètem písmen, èíslic nebo potr¾ítek. Jako regulární výraz to lze zapsat takto: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' </para> <note> <simpara> Pro na¹e úèely zde budeme za písmena pova¾ovat znaky a-z, A-Z a ASCII znaky od 127 do 255 (0x7f-0xff). </simpara> </note> <para> <informalexample> <programlisting role="php"> <![CDATA[ $var = "Bob"; $Var = "Joe"; echo "$var, $Var"; // vypí¹e "Bob, Joe" $4site = 'not yet'; // neplatné; zaèíná èíslicí $_4site = 'not yet'; // platné; zaèíná podtr¾ítkem $täyte = 'mansikka'; // platné; 'ä' je ASCII 228. ]]> </programlisting> </informalexample> </para> <para> V PHP 3 mají promìnné v¾dy pøiøazenu hodnotu. To znamená, ¾e kdy¾ pøiøadíte výraz do promìnné, celá hodnota pùvodního výrazu se zkopíruje do cílové promìnné. Tedy, napøíklad, po pøiøazení hodnoty jedné promìnné do druhé, zmìna jedné z nich se na druhé neprojeví. Více informací o tomto zpùsobu pøiøazení viz <link linkend="language.expressions">Výrazy</link>. </para> <para> PHP nabízí jiný zpùsob pøiøazení hodnot promìnným: <emphasis>pøiøazení odkazu</emphasis>. To znamená, ¾e nová promìnná jednodu¹e odkazuje (jinými slovy, "stává se aliasem" nebo "ukazuje na") na pùvodní promìnnou. Zmìny na nové promìnné se projeví na té pùvodní a naopak. To také znamená, ¾e se nic nekopíruje; proto je pøiøazení rychlej¹í. Av¹ak toto zrychlení bude zjistitelné pouze v tìsných cyklech nebo pøi pøiøazování velkých polí èi objektù. </para> <para> Pro pøiøazení odkazu staèí jednodu¹e pøed promìnnou, která bude pøiøazována (zdrojová promìnná), pøedøadit ampersand (&). Napøíklad následující kus kódu vypí¹e dvakrát 'Jmenuji se Bob': <informalexample> <programlisting role="php"> <![CDATA[ <?php $foo = 'Bob'; // Pøiøadí hodnotu 'Bob' do $foo $bar = &$foo; // Odkaz $foo pøes $bar. $bar = "Jmenuji se $bar"; // Zmìna $bar... echo $bar; echo $foo; // $foo je také zmìnìno. ?> ]]> </programlisting> </informalexample> </para> <para> Jednou z dùle¾itých vìcí, které je tøeba si uvìdomit, je to, ¾e pøes odkazy lze pøiøazovat pouze pojmenované promìnné. <informalexample> <programlisting role="php"> <![CDATA[ <?php $foo = 25; $bar = &$foo; // Toto je platné pøiøazení. $bar = &(24 * 7); // Neplatné; odkazuje se nepojmenovaný výraz. function test() { return 25; } $bar = &test(); // Neplatné. ?> ]]> </programlisting> </informalexample> </para> </sect1> <sect1 id="language.variables.predefined"> <title>Pøeddefinované promìnné</title> <simpara> PHP poskytuje velké mno¾ství pøeddefinovaných promìnných jakémukoli skriptu, který provádí. Mnoho tìchto promìnných, bohu¾el, nemù¾e být plnì zdokumentováno, proto¾e závisejí na tom, na kterém serveru skript bì¾í, na verzi a nastavení serveru a dal¹ích faktorech. Nìkteré z tìchto promìnných nebudou dostupné, kdy¾ PHP pobì¾í z pøíkazové øádky. Seznam promìnných - viz sekce <link linkend="reserved.variables">Pøeddefinované promìnné</link>. </simpara> <warning> <simpara> V PHP 4.2.0 a pozdìj¹ích se zmìnila implicitní sada pøeddefinovaných promìnných, které jsou globálnì dostupné. Individuální vstupní a serverové promìnné se <emphasis>implicitnì</emphasis> neumís»ují do globálního kontextu; namísto toho jsou v následujících <link linkend="language.variables.superglobals">superglobálních polích</link>. </simpara> <simpara> Mù¾ete v¹ak stále vynutit staré chování nastavením <link linkend="ini.register-globals">register_globals</link> v souboru &php.ini; na 'On'. </simpara> <simpara> Pro více informací a pozadí tìchto zmìn prosím nahlédnìte do <ulink url="&url.php.release4.1.0;">PHP 4.1.0 Release Announcement</ulink>. </simpara> </warning> <simpara> Od verze 4.1.0 poskytuje PHP sadu pøeddefinovaných polí, obsahujících promìnné WWW serveru (pokud to jde), prostøedí a u¾ivatelského vstupu. Tato nová pole mají tu zvlá¹tnost, ¾e jsou automaticky globální -- tedy napø. automaticky dostupné v ka¾dém kontextu. Z tohoto dùvodu jsou èasto známa jako "autoglobální" nebo "superglobální". (V PHP neexistuje mechanismus pro u¾ivatelskou definici superglobálních promìnných). Superglobální promìnné jsou vypsány ní¾e; pro seznam jejich obsahù a dal¹í diskusi o pøeddefinovaných promìnných v PHP a jejich charakteru v¹ak musíte nahlédnout do èásti <link linkend="reserved.variables">Pøeddefinované promìnné</link>. </simpara> <variablelist id="language.variables.superglobals"> <title>PHP superglobals (superglobální promìnné)</title> <varlistentry> <term><link linkend="reserved.variables.globals">$GLOBALS</link></term> <listitem> <simpara> Obsahuje odkaz na ka¾dou promìnnou, která je momentálnì dostupná v globálním kontextu skriptu. Klíèi tohoto pole jsou názvy globálních promìnných. </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.server">$_SERVER</link></term> <listitem> <simpara> Promìnné nastavované WWW serveru nebo jinak pøímo spjaté s provádìcím prostøedím aktuálního skriptu. Analogické starému poli <varname>$HTTP_SERVER_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.get">$_GET</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes HTTP GET. Analogické starému poli <varname>$HTTP_GET_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.post">$_POST</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes HTTP POST. Analogické starému poli <varname>$HTTP_POST_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.cookies">$_COOKIE</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes HTTP cookies. Analogické starému poli <varname>$HTTP_COOKIE_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.files">$_FILES</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes HTTP post uploady souborù. Analogické uploads. Analogické starému poli <varname>$HTTP_POST_FILES</varname> (které je stále dostupné, ale zavr¾ené). Více informací - viz <link linkend="features.file-upload.post-method">Upload metodou POST</link>. </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.environment">$_ENV</link></term> <listitem> <simpara>Promìnné poskytované skriptu z prostøedí. Analogické starému poli <varname>$HTTP_ENV_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.request">$_REQUEST</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes libovolný vstupní mechanismus a kterým proto nelze dùvìøovat. Pozn.: pøi bìhu z pøíkazové øádky zde <emphasis>nebudou</emphasis> pøítomny polo¾ky <varname>argv</varname> a <varname>argc</varname>; nacházejí se v poli <varname>$_SERVER</varname>. Pøítomnost a poøadí promìnných v tomto poli se definuje podle konfiguraèní direktivy <link linkend="ini.variables-order">variables_order</link>. Toto pole nemá pøímou analogii ve verzích PHP pøed 4.1.0. </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.session">$_SESSION</link></term> <listitem> <simpara> Promìnné, které jsou momentálnì registrovány v aktuální relaci skriptu. Analogické starému poli <varname>$HTTP_SESSION_VARS</varname> (které je stále dostupné, ale zavr¾ené). Více informací - viz <link linkend="ref.session">Funkce pro obsluhu sessions</link>. </simpara> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="language.variables.scope"> <title>Kontext ("scope") promìnné</title> <simpara> Kontext promìnné je oblast, ve které je definována. Vìt¹ina promìnných v PHP má pouze jediný kontext. Ten zahrnuje i soubory vlo¾ené pomocí "include" nebo "require". Napøíklad: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = 1; include "b.inc"; ]]> </programlisting> </informalexample> <simpara> Zde bude promìnná <varname>$a</varname> dostupná ve vlo¾eném skriptu <filename>b.inc</filename>. Av¹ak uvnitø u¾ivatelsky definovaných funkcí se zakládá jejich lokální kontext. Jakákoli promìnná pou¾itá uvnitø funkce je implicitnì omezena na tento místní kontext. Napøíklad: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = 1; /* globální kontext */ function Test() { echo $a; /* odkaz na promìnnou v lokálním kontextu */ } Test(); ]]> </programlisting> </informalexample> <simpara> Tento skript nevyprodukuje ¾ádný výstup, proto¾e konstrukt "echo" odkazuje na lokální verzi promìnné <varname>$a</varname>, a ta nemá v tomto kontextu pøiøazenu ¾ádnou hodnotu. Mù¾ete si v¹imnout, ¾e to je trochu jiné ne¾ v jazyce C, kde jsou globální funkce automaticky dostupné ve funkcích, pokud nejsou specificky zastínìny lokální definicí. To mù¾e zpùsobit problémy tím, ¾e èlovìk mù¾e nechtìnì zmìnit globální promìnnou. V PHP musí být globální promìnné deklarovány uvnitø funkce jako globální, pokud se v ní mají pou¾ívat. Pøíklad: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ]]> </programlisting> </informalexample> <simpara> Vý¹e uvedený skript vytiskne "3". Deklarací <varname>$a</varname> a <varname>$b</varname> ve funkci jako globálních promìnných se dosáhne toho, ¾e pøi odkazování na promìnné se pracuje s jejich globální verzí. Poèet globálních promìnných, se kterými lze ve funkci manipulovat, není omezen. </simpara> <simpara> Druhým zpùsobem, jak pøistupovat k promìnným z globálního kontextu, je pou¾ití speciálního pole <varname>$GLOBALS</varname>, definovaného v PHP. Pøedchozí pøíklad lze pøepsat: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = 1; $b = 2; function Sum() { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Sum(); echo $b; ]]> </programlisting> </informalexample> <simpara> Pole <varname>$GLOBALS</varname> je asociativní pole s názvem globální promìnné jako klíèem a obsahem pøíslu¹né promìnné jako obsahem elementu pole. </simpara> <simpara> Jinou dùle¾itou vlastností rozli¹ování kontextù promìnných je mo¾nost pou¾ívání <emphasis>static</emphasis> promìnných. Statická promìnná existuje pouze v lokálním kontextu funkce, ale neztrácí svoji hodnotu, pokud provádìní programu tento kontext opustí. Uva¾ujme následující pøíklad: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ function Test () { $a = 0; echo $a; $a++; } ]]> </programlisting> </informalexample> <simpara> Tato funkce je ponìkud neu¾iteèná, nebo» pøi ka¾dém volání nastavuje <varname>$a</varname> na <literal>0</literal> a tiskne "0". Konstrukt <varname>$a</varname>++, který inkrementuje promìnnou, nemá ¾ádný význam, proto¾e pøi skonèení vykonávání funkce se obsah promìnné <varname>$a</varname> ztrácí. Aby mìla funkce skuteèný význam èítaèe a hodnota se neztrácela, deklaruje se promìnná <varname>$a</varname> jako statická: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ function Test() { static $a = 0; echo $a; $a++; } ]]> </programlisting> </informalexample> <simpara> Nyní se pøi ka¾dém volání funkce Test() vytiskne hodnota promìnné <varname>$a</varname> a inkrementuje se. </simpara> <simpara> Static variables also provide one way to deal with recursive functions. A recursive function is one which calls itself. Care must be taken when writing a recursive function because it is possible to make it recurse indefinitely. You must make sure you have an adequate way of terminating the recursion. The following simple function recursively counts to 10, using the static variable <varname>$count</varname> to know when to stop: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test (); } $count--; } ]]> </programlisting> </informalexample> </sect1> <sect1 id="language.variables.variable"> <title>Variable variables</title> <simpara> Sometimes it is convenient to be able to have variable variable names. That is, a variable name which can be set and used dynamically. A normal variable is set with a statement such as: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = "hello"; ]]> </programlisting> </informalexample> <simpara> A variable variable takes the value of a variable and treats that as the name of a variable. In the above example, <emphasis>hello</emphasis>, can be used as the name of a variable by using two dollar signs. i.e. </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $$a = "world"; ]]> </programlisting> </informalexample> <simpara> At this point two variables have been defined and stored in the PHP symbol tree: <varname>$a</varname> with contents "hello" and <varname>$hello</varname> with contents "world". Therefore, this statement: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ echo "$a ${$a}"; ]]> </programlisting> </informalexample> <simpara> produces the exact same output as: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ echo "$a $hello"; ]]> </programlisting> </informalexample> <simpara> i.e. they both produce: <computeroutput>hello world</computeroutput>. </simpara> <simpara> In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write <varname>$$a[1]</varname> then the parser needs to know if you meant to use <varname>$a[1]</varname> as a variable, or if you wanted <varname>$$a</varname> as the variable and then the [1] index from that variable. The syntax for resolving this ambiguity is: <varname>${$a[1]}</varname> for the first case and <varname>${$a}[1]</varname> for the second. </simpara> </sect1> <sect1 id="language.variables.external"> <title>Variables from outside PHP</title> <sect2 id="language.variables.external.form"> <title>HTML Forms (GET and POST)</title> <simpara> When a form is submitted to a PHP script, any variables from that form will be automatically made available to the script by PHP. If the <link linkend="ini.track-vars">track_vars</link> configuration option is turned on, then these variables will be located in the associative arrays <varname>$HTTP_POST_VARS</varname>, <varname>$HTTP_GET_VARS</varname>, and/or <varname>$HTTP_POST_FILES</varname>, according to the source of the variable in question. </simpara> <para> For more information on these variables, please read <link linkend="language.variables.predefined">Predefined variables</link>. </para> <para> <example> <title>Simple form variable</title> <programlisting role="php"> <![CDATA[ <form action="foo.php" method="post"> Name: <input type="text" name="username"><br> <input type="submit"> </form> ]]> </programlisting> </example> </para> <para> When the above form is submitted, the value from the text input will be available in <varname>$HTTP_POST_VARS['username']</varname>. If the <link linkend="ini.register-globals">register_globals</link> configuration directive is turned on, then the variable will also be available as <varname>$username</varname> in the global scope. </para> <note> <para> The <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> configuration directive affects Get, Post and Cookie values. If turned on, value (It's "PHP!") will automagically become (It\'s \"PHP!\"). Escaping is needed for DB insertion. Also see <function>addslashes</function>, <function>stripslashes</function> and <link linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>. </para> </note> <simpara> PHP also understands arrays in the context of form variables (see the <link linkend="faq.html">related faq</link>). You may, for example, group related variables together, or use this feature to retrieve values from a multiple select input: </simpara> <para> <example> <title>More complex form variables</title> <programlisting role="php"> <![CDATA[ <form action="array.php" method="post"> Name: <input type="text" name="personal[name]"><br> Email: <input type="text" name="personal[email]"><br> Beer: <br> <select multiple name="beer[]"> <option value="warthog">Warthog <option value="guinness">Guinness <option value="stuttgarter">Stuttgarter Schwabenbräu </select> <input type="submit"> </form> ]]> </programlisting> </example> </para> <para> In PHP 3, the array form variable usage is limited to single-dimensional arrays. In PHP 4, no such restriction applies. </para> <sect3 id="language.variables.external.form.submit"> <title>IMAGE SUBMIT variable names</title> <simpara> When submitting a form, it is possible to use an image instead of the standard submit button with a tag like:</simpara> <informalexample> <programlisting role="php"> <![CDATA[ <input type="image" src="image.gif" name="sub"> ]]> </programlisting> </informalexample> <simpara> When the user clicks somewhere on the image, the accompanying form will be transmitted to the server with two additional variables, sub_x and sub_y. These contain the coordinates of the user click within the image. The experienced may note that the actual variable names sent by the browser contains a period rather than an underscore, but PHP converts the period to an underscore automatically. </simpara> </sect3> </sect2> <sect2 id="language.variables.external.cookies"> <title>HTTP Cookies</title> <simpara> PHP transparently supports HTTP cookies as defined by <ulink url="&spec.cookies;">Netscape's Spec</ulink>. Cookies are a mechanism for storing data in the remote browser and thus tracking or identifying return users. You can set cookies using the <function>setcookie</function> function. Cookies are part of the HTTP header, so the SetCookie function must be called before any output is sent to the browser. This is the same restriction as for the <function>header</function> function. Any cookies sent to you from the client will automatically be turned into a PHP variable just like GET and POST method data.</simpara> <simpara> If you wish to assign multiple values to a single cookie, just add <emphasis>[]</emphasis> to the cookie name. For example: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ setcookie("MyCookie[]", "Testing", time()+3600); ]]> </programlisting> </informalexample> <simpara> Note that a cookie will replace a previous cookie by the same name in your browser unless the path or domain is different. So, for a shopping cart application you may want to keep a counter and pass this along. i.e. </simpara> <example> <title>SetCookie Example</title> <programlisting role="php"> <![CDATA[ $Count++; setcookie("Count", $Count, time()+3600); setcookie("Cart[$Count]", $item, time()+3600); ]]> </programlisting> </example> </sect2> <sect2 id="language.variables.external.environment"> <title>Environment variables</title> <para> PHP automatically makes environment variables available as normal PHP variables. <informalexample> <programlisting role="php"> <![CDATA[ echo $HOME; /* Shows the HOME environment variable, if set. */ ]]> </programlisting> </informalexample> </para> <para> Since information coming in via GET, POST and Cookie mechanisms also automatically create PHP variables, it is sometimes best to explicitly read a variable from the environment in order to make sure that you are getting the right version. The <function>getenv</function> function can be used for this. You can also set an environment variable with the <function>putenv</function> function. </para> </sect2> <sect2 id="language.variables.external.dot-in-names"> <title>Dots in incoming variable names</title> <para> Typically, PHP does not alter the names of variables when they are passed into a script. However, it should be noted that the dot (period, full stop) is not a valid character in a PHP variable name. For the reason, look at it: <programlisting role="php"> <![CDATA[ $varname.ext; /* invalid variable name */ ]]> </programlisting> Now, what the parser sees is a variable named <varname>$varname</varname>, followed by the string concatenation operator, followed by the barestring (i.e. unquoted string which doesn't match any known key or reserved words) 'ext'. Obviously, this doesn't have the intended result. </para> <para> For this reason, it is important to note that PHP will automatically replace any dots in incoming variable names with underscores. </para> </sect2> <sect2 id="language.variables.determining-type-of"> <title>Determining variable types</title> <para> Because PHP determines the types of variables and converts them (generally) as needed, it is not always obvious what type a given variable is at any one time. PHP includes several functions which find out what type a variable is. They are <function>gettype</function>, <function>is_array</function>, <function>is_float</function>, <function>is_int</function>, <function>is_object</function>, and <function>is_string</function>. </para> </sect2> </sect1> </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: -->
Index: phpdoc/cs/language/control-structures.xml diff -u phpdoc/cs/language/control-structures.xml:1.4 phpdoc/cs/language/control-structures.xml:1.5 --- phpdoc/cs/language/control-structures.xml:1.4 Thu Apr 25 17:58:13 2002 +++ phpdoc/cs/language/control-structures.xml Fri Apr 26 16:35:27 2002 @@ -854,27 +854,25 @@ <link linkend="control-structures.declare.ticks">ticks</link>) </para> <para> - The <literal>statement</literal> part of the - <literal>declare</literal> block will be executed - how - it is executed and what side-effects occur during execution - may depend on the directive set in the - <literal>directive</literal> block. + Èást <literal>statement</literal> bloku <literal>declare</literal> + bude provedena - jak bude provedena a jaké vedlej¹í efekty nastanou + bìhem provádìní mù¾e zále¾et na direktivì nastavené v bloku + <literal>directive</literal>. </para> <sect2 id="control-structures.declare.ticks"> <title>Ticks</title> - <para>A tick is an event that occurs for every - <replaceable>N</replaceable> low-level statements executed - by the parser within the <literal>declare</literal> block. - The value for <replaceable>N</replaceable> is specified - using <literal>ticks=<replaceable>N</replaceable></literal> - within the <literal>declare</literal> blocks's - <literal>directive</literal> section. + <para>Tick je událost, která nastane pro ka¾dých + <replaceable>N</replaceable> nízkoúrovòových konstruktù provedených + parserem uvnitø bloku <literal>declare</literal>. Hodnota + <replaceable>N</replaceable> je specifikována pomocí + <literal>ticks=<replaceable>N</replaceable></literal> uvnitø sekce + <literal>directive</literal> bloku <literal>declare</literal>. </para> <para> - The event(s) that occurs on each tick is specified using the - <function>register_tick_function</function>. See the example - below for more details. Note that more than one event can occur - for each tick. + Událost(i), která nastane pøi ka¾dém ticku, se specifikuje pomocí + <function>register_tick_function</function>. Více podrobností - viz + pøíklad ní¾e. Uvìdomte si, ¾e na ka¾dý tick mù¾e nastat více ne¾ jedna + událost. </para> <para> <example> Index: phpdoc/cs/language/variables.xml +++ phpdoc/cs/language/variables.xml <?xml version="1.0" encoding="iso-8859-2"?> <!-- EN-Revision: 1.45 Maintainer: luk Status: mixed --> <chapter id="language.variables"> <title>Promìnné</title> <sect1 id="language.variables.basics"> <title>Základy</title> <simpara> Promìnné jsou v PHP reprezentovány znakem dolaru, následovaným názvem pøíslu¹né promìnné. V názvech promìnných se rozli¹uje velikost písmen. </simpara> <para> Názvy promìnných jsou podøízeny stejným pravidlùm jako jiná návì¹tí v PHP. Platný název promìnné zaèíná písmenem nebo podtr¾ítkem, následovaným libovolným poètem písmen, èíslic nebo potr¾ítek. Jako regulární výraz to lze zapsat takto: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' </para> <note> <simpara> Pro na¹e úèely zde budeme za písmena pova¾ovat znaky a-z, A-Z a ASCII znaky od 127 do 255 (0x7f-0xff). </simpara> </note> <para> <informalexample> <programlisting role="php"> <![CDATA[ $var = "Bob"; $Var = "Joe"; echo "$var, $Var"; // vypí¹e "Bob, Joe" $4site = 'not yet'; // neplatné; zaèíná èíslicí $_4site = 'not yet'; // platné; zaèíná podtr¾ítkem $täyte = 'mansikka'; // platné; 'ä' je ASCII 228. ]]> </programlisting> </informalexample> </para> <para> V PHP 3 mají promìnné v¾dy pøiøazenu hodnotu. To znamená, ¾e kdy¾ pøiøadíte výraz do promìnné, celá hodnota pùvodního výrazu se zkopíruje do cílové promìnné. Tedy, napøíklad, po pøiøazení hodnoty jedné promìnné do druhé, zmìna jedné z nich se na druhé neprojeví. Více informací o tomto zpùsobu pøiøazení viz <link linkend="language.expressions">Výrazy</link>. </para> <para> PHP nabízí jiný zpùsob pøiøazení hodnot promìnným: <emphasis>pøiøazení odkazu</emphasis>. To znamená, ¾e nová promìnná jednodu¹e odkazuje (jinými slovy, "stává se aliasem" nebo "ukazuje na") na pùvodní promìnnou. Zmìny na nové promìnné se projeví na té pùvodní a naopak. To také znamená, ¾e se nic nekopíruje; proto je pøiøazení rychlej¹í. Av¹ak toto zrychlení bude zjistitelné pouze v tìsných cyklech nebo pøi pøiøazování velkých polí èi objektù. </para> <para> Pro pøiøazení odkazu staèí jednodu¹e pøed promìnnou, která bude pøiøazována (zdrojová promìnná), pøedøadit ampersand (&). Napøíklad následující kus kódu vypí¹e dvakrát 'Jmenuji se Bob': <informalexample> <programlisting role="php"> <![CDATA[ <?php $foo = 'Bob'; // Pøiøadí hodnotu 'Bob' do $foo $bar = &$foo; // Odkaz $foo pøes $bar. $bar = "Jmenuji se $bar"; // Zmìna $bar... echo $bar; echo $foo; // $foo je také zmìnìno. ?> ]]> </programlisting> </informalexample> </para> <para> Jednou z dùle¾itých vìcí, které je tøeba si uvìdomit, je to, ¾e pøes odkazy lze pøiøazovat pouze pojmenované promìnné. <informalexample> <programlisting role="php"> <![CDATA[ <?php $foo = 25; $bar = &$foo; // Toto je platné pøiøazení. $bar = &(24 * 7); // Neplatné; odkazuje se nepojmenovaný výraz. function test() { return 25; } $bar = &test(); // Neplatné. ?> ]]> </programlisting> </informalexample> </para> </sect1> <sect1 id="language.variables.predefined"> <title>Pøeddefinované promìnné</title> <simpara> PHP poskytuje velké mno¾ství pøeddefinovaných promìnných jakémukoli skriptu, který provádí. Mnoho tìchto promìnných, bohu¾el, nemù¾e být plnì zdokumentováno, proto¾e závisejí na tom, na kterém serveru skript bì¾í, na verzi a nastavení serveru a dal¹ích faktorech. Nìkteré z tìchto promìnných nebudou dostupné, kdy¾ PHP pobì¾í z pøíkazové øádky. Seznam promìnných - viz sekce <link linkend="reserved.variables">Pøeddefinované promìnné</link>. </simpara> <warning> <simpara> V PHP 4.2.0 a pozdìj¹ích se zmìnila implicitní sada pøeddefinovaných promìnných, které jsou globálnì dostupné. Individuální vstupní a serverové promìnné se <emphasis>implicitnì</emphasis> neumís»ují do globálního kontextu; namísto toho jsou v následujících <link linkend="language.variables.superglobals">superglobálních polích</link>. </simpara> <simpara> Mù¾ete v¹ak stále vynutit staré chování nastavením <link linkend="ini.register-globals">register_globals</link> v souboru &php.ini; na 'On'. </simpara> <simpara> Pro více informací a pozadí tìchto zmìn prosím nahlédnìte do <ulink url="&url.php.release4.1.0;">PHP 4.1.0 Release Announcement</ulink>. </simpara> </warning> <simpara> Od verze 4.1.0 poskytuje PHP sadu pøeddefinovaných polí, obsahujících promìnné WWW serveru (pokud to jde), prostøedí a u¾ivatelského vstupu. Tato nová pole mají tu zvlá¹tnost, ¾e jsou automaticky globální -- tedy napø. automaticky dostupné v ka¾dém kontextu. Z tohoto dùvodu jsou èasto známa jako "autoglobální" nebo "superglobální". (V PHP neexistuje mechanismus pro u¾ivatelskou definici superglobálních promìnných). Superglobální promìnné jsou vypsány ní¾e; pro seznam jejich obsahù a dal¹í diskusi o pøeddefinovaných promìnných v PHP a jejich charakteru v¹ak musíte nahlédnout do èásti <link linkend="reserved.variables">Pøeddefinované promìnné</link>. </simpara> <variablelist id="language.variables.superglobals"> <title>PHP superglobals (superglobální promìnné)</title> <varlistentry> <term><link linkend="reserved.variables.globals">$GLOBALS</link></term> <listitem> <simpara> Obsahuje odkaz na ka¾dou promìnnou, která je momentálnì dostupná v globálním kontextu skriptu. Klíèi tohoto pole jsou názvy globálních promìnných. </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.server">$_SERVER</link></term> <listitem> <simpara> Promìnné nastavované WWW serveru nebo jinak pøímo spjaté s provádìcím prostøedím aktuálního skriptu. Analogické starému poli <varname>$HTTP_SERVER_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.get">$_GET</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes HTTP GET. Analogické starému poli <varname>$HTTP_GET_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.post">$_POST</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes HTTP POST. Analogické starému poli <varname>$HTTP_POST_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.cookies">$_COOKIE</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes HTTP cookies. Analogické starému poli <varname>$HTTP_COOKIE_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.files">$_FILES</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes HTTP post uploady souborù. Analogické uploads. Analogické starému poli <varname>$HTTP_POST_FILES</varname> (které je stále dostupné, ale zavr¾ené). Více informací - viz <link linkend="features.file-upload.post-method">Upload metodou POST</link>. </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.environment">$_ENV</link></term> <listitem> <simpara>Promìnné poskytované skriptu z prostøedí. Analogické starému poli <varname>$HTTP_ENV_VARS</varname> (které je stále dostupné, ale zavr¾ené). </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.request">$_REQUEST</link></term> <listitem> <simpara> Promìnné poskytované skriptu pøes libovolný vstupní mechanismus a kterým proto nelze dùvìøovat. Pozn.: pøi bìhu z pøíkazové øádky zde <emphasis>nebudou</emphasis> pøítomny polo¾ky <varname>argv</varname> a <varname>argc</varname>; nacházejí se v poli <varname>$_SERVER</varname>. Pøítomnost a poøadí promìnných v tomto poli se definuje podle konfiguraèní direktivy <link linkend="ini.variables-order">variables_order</link>. Toto pole nemá pøímou analogii ve verzích PHP pøed 4.1.0. </simpara> </listitem> </varlistentry> <varlistentry> <term><link linkend="reserved.variables.session">$_SESSION</link></term> <listitem> <simpara> Promìnné, které jsou momentálnì registrovány v aktuální relaci skriptu. Analogické starému poli <varname>$HTTP_SESSION_VARS</varname> (které je stále dostupné, ale zavr¾ené). Více informací - viz <link linkend="ref.session">Funkce pro obsluhu sessions</link>. </simpara> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="language.variables.scope"> <title>Kontext ("scope") promìnné</title> <simpara> Kontext promìnné je oblast, ve které je definována. Vìt¹ina promìnných v PHP má pouze jediný kontext. Ten zahrnuje i soubory vlo¾ené pomocí "include" nebo "require". Napøíklad: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = 1; include "b.inc"; ]]> </programlisting> </informalexample> <simpara> Zde bude promìnná <varname>$a</varname> dostupná ve vlo¾eném skriptu <filename>b.inc</filename>. Av¹ak uvnitø u¾ivatelsky definovaných funkcí se zakládá jejich lokální kontext. Jakákoli promìnná pou¾itá uvnitø funkce je implicitnì omezena na tento místní kontext. Napøíklad: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = 1; /* globální kontext */ function Test() { echo $a; /* odkaz na promìnnou v lokálním kontextu */ } Test(); ]]> </programlisting> </informalexample> <simpara> Tento skript nevyprodukuje ¾ádný výstup, proto¾e konstrukt "echo" odkazuje na lokální verzi promìnné <varname>$a</varname>, a ta nemá v tomto kontextu pøiøazenu ¾ádnou hodnotu. Mù¾ete si v¹imnout, ¾e to je trochu jiné ne¾ v jazyce C, kde jsou globální funkce automaticky dostupné ve funkcích, pokud nejsou specificky zastínìny lokální definicí. To mù¾e zpùsobit problémy tím, ¾e èlovìk mù¾e nechtìnì zmìnit globální promìnnou. V PHP musí být globální promìnné deklarovány uvnitø funkce jako globální, pokud se v ní mají pou¾ívat. Pøíklad: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ]]> </programlisting> </informalexample> <simpara> Vý¹e uvedený skript vytiskne "3". Deklarací <varname>$a</varname> a <varname>$b</varname> ve funkci jako globálních promìnných se dosáhne toho, ¾e pøi odkazování na promìnné se pracuje s jejich globální verzí. Poèet globálních promìnných, se kterými lze ve funkci manipulovat, není omezen. </simpara> <simpara> Druhým zpùsobem, jak pøistupovat k promìnným z globálního kontextu, je pou¾ití speciálního pole <varname>$GLOBALS</varname>, definovaného v PHP. Pøedchozí pøíklad lze pøepsat: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = 1; $b = 2; function Sum() { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Sum(); echo $b; ]]> </programlisting> </informalexample> <simpara> Pole <varname>$GLOBALS</varname> je asociativní pole s názvem globální promìnné jako klíèem a obsahem pøíslu¹né promìnné jako obsahem elementu pole. </simpara> <simpara> Jinou dùle¾itou vlastností rozli¹ování kontextù promìnných je mo¾nost pou¾ívání <emphasis>static</emphasis> promìnných. Statická promìnná existuje pouze v lokálním kontextu funkce, ale neztrácí svoji hodnotu, pokud provádìní programu tento kontext opustí. Uva¾ujme následující pøíklad: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ function Test () { $a = 0; echo $a; $a++; } ]]> </programlisting> </informalexample> <simpara> Tato funkce je ponìkud neu¾iteèná, nebo» pøi ka¾dém volání nastavuje <varname>$a</varname> na <literal>0</literal> a tiskne "0". Konstrukt <varname>$a</varname>++, který inkrementuje promìnnou, nemá ¾ádný význam, proto¾e pøi skonèení vykonávání funkce se obsah promìnné <varname>$a</varname> ztrácí. Aby mìla funkce skuteèný význam èítaèe a hodnota se neztrácela, deklaruje se promìnná <varname>$a</varname> jako statická: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ function Test() { static $a = 0; echo $a; $a++; } ]]> </programlisting> </informalexample> <simpara> Nyní se pøi ka¾dém volání funkce Test() vytiskne hodnota promìnné <varname>$a</varname> a inkrementuje se. </simpara> <simpara> Static variables also provide one way to deal with recursive functions. A recursive function is one which calls itself. Care must be taken when writing a recursive function because it is possible to make it recurse indefinitely. You must make sure you have an adequate way of terminating the recursion. The following simple function recursively counts to 10, using the static variable <varname>$count</varname> to know when to stop: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test (); } $count--; } ]]> </programlisting> </informalexample> </sect1> <sect1 id="language.variables.variable"> <title>Variable variables</title> <simpara> Sometimes it is convenient to be able to have variable variable names. That is, a variable name which can be set and used dynamically. A normal variable is set with a statement such as: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $a = "hello"; ]]> </programlisting> </informalexample> <simpara> A variable variable takes the value of a variable and treats that as the name of a variable. In the above example, <emphasis>hello</emphasis>, can be used as the name of a variable by using two dollar signs. i.e. </simpara> <informalexample> <programlisting role="php"> <![CDATA[ $$a = "world"; ]]> </programlisting> </informalexample> <simpara> At this point two variables have been defined and stored in the PHP symbol tree: <varname>$a</varname> with contents "hello" and <varname>$hello</varname> with contents "world". Therefore, this statement: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ echo "$a ${$a}"; ]]> </programlisting> </informalexample> <simpara> produces the exact same output as: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ echo "$a $hello"; ]]> </programlisting> </informalexample> <simpara> i.e. they both produce: <computeroutput>hello world</computeroutput>. </simpara> <simpara> In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write <varname>$$a[1]</varname> then the parser needs to know if you meant to use <varname>$a[1]</varname> as a variable, or if you wanted <varname>$$a</varname> as the variable and then the [1] index from that variable. The syntax for resolving this ambiguity is: <varname>${$a[1]}</varname> for the first case and <varname>${$a}[1]</varname> for the second. </simpara> </sect1> <sect1 id="language.variables.external"> <title>Variables from outside PHP</title> <sect2 id="language.variables.external.form"> <title>HTML Forms (GET and POST)</title> <simpara> When a form is submitted to a PHP script, any variables from that form will be automatically made available to the script by PHP. If the <link linkend="ini.track-vars">track_vars</link> configuration option is turned on, then these variables will be located in the associative arrays <varname>$HTTP_POST_VARS</varname>, <varname>$HTTP_GET_VARS</varname>, and/or <varname>$HTTP_POST_FILES</varname>, according to the source of the variable in question. </simpara> <para> For more information on these variables, please read <link linkend="language.variables.predefined">Predefined variables</link>. </para> <para> <example> <title>Simple form variable</title> <programlisting role="php"> <![CDATA[ <form action="foo.php" method="post"> Name: <input type="text" name="username"><br> <input type="submit"> </form> ]]> </programlisting> </example> </para> <para> When the above form is submitted, the value from the text input will be available in <varname>$HTTP_POST_VARS['username']</varname>. If the <link linkend="ini.register-globals">register_globals</link> configuration directive is turned on, then the variable will also be available as <varname>$username</varname> in the global scope. </para> <note> <para> The <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> configuration directive affects Get, Post and Cookie values. If turned on, value (It's "PHP!") will automagically become (It\'s \"PHP!\"). Escaping is needed for DB insertion. Also see <function>addslashes</function>, <function>stripslashes</function> and <link linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>. </para> </note> <simpara> PHP also understands arrays in the context of form variables (see the <link linkend="faq.html">related faq</link>). You may, for example, group related variables together, or use this feature to retrieve values from a multiple select input: </simpara> <para> <example> <title>More complex form variables</title> <programlisting role="php"> <![CDATA[ <form action="array.php" method="post"> Name: <input type="text" name="personal[name]"><br> Email: <input type="text" name="personal[email]"><br> Beer: <br> <select multiple name="beer[]"> <option value="warthog">Warthog <option value="guinness">Guinness <option value="stuttgarter">Stuttgarter Schwabenbräu </select> <input type="submit"> </form> ]]> </programlisting> </example> </para> <para> In PHP 3, the array form variable usage is limited to single-dimensional arrays. In PHP 4, no such restriction applies. </para> <sect3 id="language.variables.external.form.submit"> <title>IMAGE SUBMIT variable names</title> <simpara> When submitting a form, it is possible to use an image instead of the standard submit button with a tag like:</simpara> <informalexample> <programlisting role="php"> <![CDATA[ <input type="image" src="image.gif" name="sub"> ]]> </programlisting> </informalexample> <simpara> When the user clicks somewhere on the image, the accompanying form will be transmitted to the server with two additional variables, sub_x and sub_y. These contain the coordinates of the user click within the image. The experienced may note that the actual variable names sent by the browser contains a period rather than an underscore, but PHP converts the period to an underscore automatically. </simpara> </sect3> </sect2> <sect2 id="language.variables.external.cookies"> <title>HTTP Cookies</title> <simpara> PHP transparently supports HTTP cookies as defined by <ulink url="&spec.cookies;">Netscape's Spec</ulink>. Cookies are a mechanism for storing data in the remote browser and thus tracking or identifying return users. You can set cookies using the <function>setcookie</function> function. Cookies are part of the HTTP header, so the SetCookie function must be called before any output is sent to the browser. This is the same restriction as for the <function>header</function> function. Any cookies sent to you from the client will automatically be turned into a PHP variable just like GET and POST method data.</simpara> <simpara> If you wish to assign multiple values to a single cookie, just add <emphasis>[]</emphasis> to the cookie name. For example: </simpara> <informalexample> <programlisting role="php"> <![CDATA[ setcookie("MyCookie[]", "Testing", time()+3600); ]]> </programlisting> </informalexample> <simpara> Note that a cookie will replace a previous cookie by the same name in your browser unless the path or domain is different. So, for a shopping cart application you may want to keep a counter and pass this along. i.e. </simpara> <example> <title>SetCookie Example</title> <programlisting role="php"> <![CDATA[ $Count++; setcookie("Count", $Count, time()+3600); setcookie("Cart[$Count]", $item, time()+3600); ]]> </programlisting> </example> </sect2> <sect2 id="language.variables.external.environment"> <title>Environment variables</title> <para> PHP automatically makes environment variables available as normal PHP variables. <informalexample> <programlisting role="php"> <![CDATA[ echo $HOME; /* Shows the HOME environment variable, if set. */ ]]> </programlisting> </informalexample> </para> <para> Since information coming in via GET, POST and Cookie mechanisms also automatically create PHP variables, it is sometimes best to explicitly read a variable from the environment in order to make sure that you are getting the right version. The <function>getenv</function> function can be used for this. You can also set an environment variable with the <function>putenv</function> function. </para> </sect2> <sect2 id="language.variables.external.dot-in-names"> <title>Dots in incoming variable names</title> <para> Typically, PHP does not alter the names of variables when they are passed into a script. However, it should be noted that the dot (period, full stop) is not a valid character in a PHP variable name. For the reason, look at it: <programlisting role="php"> <![CDATA[ $varname.ext; /* invalid variable name */ ]]> </programlisting> Now, what the parser sees is a variable named <varname>$varname</varname>, followed by the string concatenation operator, followed by the barestring (i.e. unquoted string which doesn't match any known key or reserved words) 'ext'. Obviously, this doesn't have the intended result. </para> <para> For this reason, it is important to note that PHP will automatically replace any dots in incoming variable names with underscores. </para> </sect2> <sect2 id="language.variables.determining-type-of"> <title>Determining variable types</title> <para> Because PHP determines the types of variables and converts them (generally) as needed, it is not always obvious what type a given variable is at any one time. PHP includes several functions which find out what type a variable is. They are <function>gettype</function>, <function>is_array</function>, <function>is_float</function>, <function>is_int</function>, <function>is_object</function>, and <function>is_string</function>. </para> </sect2> </sect1> </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: -->