kevinkee Sat Jun 7 13:27:52 2003 EDT Modified files: /phpdoc/en/language variables.xml Log: new file
Index: phpdoc/en/language/variables.xml diff -u phpdoc/en/language/variables.xml:1.59 phpdoc/en/language/variables.xml:1.60 --- phpdoc/en/language/variables.xml:1.59 Fri Jun 6 01:33:09 2003 +++ phpdoc/en/language/variables.xml Sat Jun 7 13:27:52 2003 @@ -1,28 +1,22 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.59 $ --> +<?xml version="1.0" encoding="big5"?> +<!-- $Revision: 1.60 $ --> <chapter id="language.variables"> - <title>Variables</title> + <title>各類變數</title> <sect1 id="language.variables.basics"> - <title>Basics</title> + <title>基本知識</title> <simpara> - Variables in PHP are represented by a dollar sign followed by the - name of the variable. The variable name is case-sensitive. + 所有 PHP 的變數都是以 "$" 為開端,後加變數名所組成的。變數名稱是有大小寫之分的。 </simpara> <para> - Variable names follow the same rules as other labels in PHP. A - valid variable name starts with a letter or underscore, followed - by any number of letters, numbers, or underscores. As a regular - expression, it would be expressed thus: - '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' + PHP [EMAIL PROTECTED]'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' </para> <note> <simpara> - For our purposes here, a letter is a-z, A-Z, and the ASCII - characters from 127 through 255 (0x7f-0xff). + 字母為 a-z,A-Z,而 ASCII 字符則從 127 至 255〈0x7f-0xff〉。 </simpara> </note> @@ -45,33 +39,14 @@ </para> <para> - In PHP 3, variables are always assigned by value. That is to say, - when you assign an expression to a variable, the entire value of - the original expression is copied into the destination - variable. This means, for instance, that after assigning one - variable's value to another, changing one of those variables will - have no effect on the other. For more information on this kind of - assignment, see the chapter on <link - linkend="language.expressions">Expressions</link>. + PHP 3 [EMAIL PROTECTED]@個變數時,整個原始運算式的值將會[EMAIL PROTECTED]@[EMAIL PROTECTED]|[EMAIL PROTECTED]<link linkend="language.expressions">運算式</link>[EMAIL PROTECTED] </para> <para> - PHP 4 offers another way to assign values to variables: - <link linkend="language.references">assign by reference</link>. - This means that the new variable simply references (in other words, - "becomes an alias for" or "points to") the original variable. - Changes to the new variable affect the original, and vice versa. - This also means that no copying is performed; thus, the assignment - happens more quickly. However, any speedup will likely be noticed - only in tight loops or when assigning large - <link linkend="language.types.array">arrays</link> or - <link linkend="language.types.object">objects</link>. + PHP 4 [EMAIL PROTECTED]<link linkend="language.references">傳址指派</link>[EMAIL PROTECTED]|[EMAIL PROTECTED]@[EMAIL PROTECTED]<link linkend="language.types.array">陣列</link>或<link linkend="language.types.object">物件</link>時才會察覺速度的提升。 </para> <para> - To assign by reference, simply prepend an ampersand (&) to the - beginning of the variable which is being assigned (the source - variable). For instance, the following code snippet outputs 'My - name is Bob' twice: - + [EMAIL PROTECTED] (&) 的符號。例如,下列程式碼在使用傳址指派後輸出 'My name is Bob' 兩次。 + <informalexample> <programlisting role="php"> <![CDATA[ @@ -88,8 +63,7 @@ </para> <para> - One important thing to note is that only named variables may be - assigned by reference. + 需要注意的是只有真正命名的變數才可以用來進行傳址指派。 <informalexample> <programlisting role="php"> <![CDATA[ @@ -112,89 +86,48 @@ </sect1> <sect1 id="language.variables.predefined"> - <title>Predefined variables</title> + <title>預設的變數</title> <simpara> - PHP provides a large number of predefined variables to any script - which it runs. Many of these variables, however, cannot be fully - documented as they are dependent upon which server is running, the - version and setup of the server, and other factors. Some of these - variables will not be available when PHP is run on the - <link linkend="features.commandline">command line</link>. - For a listing of these variables, please see the section on - <link linkend="reserved.variables">Reserved Predefined Variables</link>. + PHP [EMAIL PROTECTED]<link linkend="features.commandline">指令行</link>的模式運行時是不能使用的。有關這些變數的列表,請參考<link linkend="reserved.variables">保留的先前定義變數</link>[EMAIL PROTECTED] </simpara> <warning> <simpara> - In PHP 4.2.0 and later, the default value for the PHP directive <link - linkend="ini.register-globals">register_globals</link> is - <emphasis>off</emphasis>. This is a major change in PHP. Having - register_globals <emphasis>off</emphasis> affects the set of predefined - variables available in the global scope. For example, to get - <varname>DOCUMENT_ROOT</varname> you'll use - <varname>$_SERVER['DOCUMENT_ROOT']</varname> instead of - <varname>$DOCUMENT_ROOT</varname>, or <varname>$_GET['id']</varname> from - the URL <literal>http://www.example.com/test.php?id=3</literal> instead - of <varname>$id</varname>, or <varname>$_ENV['HOME']</varname> instead of - <varname>$HOME</varname>. + PHP 4.2.0 以後的版本,<link linkend="ini.register-globals">register_globals</link> 指令的預設值是 <emphasis>off</emphasis>[EMAIL PROTECTED] register_globals 的值預設為 <emphasis>off</emphasis> 會影響到預設變數在全域範圍內的有效性。例如,要得到 <varname>DOCUMENT_ROOT</varname> 的值,應使用 <varname>$_SERVER['DOCUMENT_ROOT']</varname> 而不是 <varname>$DOCUMENT_ROOT</varname>、使用 <varname>$_GET['id']</varname> 以取得 URL <literal>http://www.example.com/test.php?id=3</literal> 中 id 的值,而不是用 <varname>$id</varname>、或使用 <varname>$_ENV['HOME']</varname> 來取代 <varname>$HOME</varname>。 </simpara> <simpara> - For related information on this change, read the configuration entry for - <link linkend="ini.register-globals">register_globals</link>, the security - chapter on <link linkend="security.registerglobals">Using Register Globals - </link>, as well as the PHP <ulink url="&url.php.release4.1.0;">4.1.0 - </ulink> and <ulink url="&url.php.release4.2.0;">4.2.0</ulink> Release - Announcements. + 更多與此更改相關的資料可在 <link linkend="ini.register-globals">register_globals</link> [EMAIL PROTECTED]<link linkend="security.registerglobals">使用 Register Globals</link> 中的安全章,或在 <ulink url="&url.php.release4.1.0;">4.1.0</ulink> 及 <ulink url="&url.php.release4.2.0;">4.2.0</ulink> 的發行通告中取得。 </simpara> <simpara> - Using the available PHP Reserved Predefined Variables, like the - <link linkend="language.variables.superglobals">superglobal arrays</link>, - is preferred. + 我們建議您使用 PHP 提供的保留預設變數,如 <link linkend="language.variables.superglobals">superglobal 陳列</link>。 </simpara> </warning> <simpara> - From version 4.1.0 onward, PHP provides an additional set of predefined arrays - containing variables from the web server (if applicable), the - environment, and user input. These new arrays are rather special - in that they are automatically global--i.e., automatically - available in every scope. For this reason, they are often known as - 'autoglobals' or 'superglobals'. (There is no mechanism in PHP for - user-defined superglobals.) The superglobals are listed below; - however, for a listing of their contents and further discussion on - PHP predefined variables and their natures, please see the section - <link linkend="reserved.variables">Reserved Predefined Variables</link>. - Also, you'll notice how the older predefined variables - (<varname>$HTTP_*_VARS</varname>) still exist. - + 自 4.1.0 版本起,PHP [EMAIL PROTECTED]|自動地設為全域,即可以在所有範圍內使用。正因如此,它們也被稱為 'autoglobals' 或 'superglobals'。〈PHP 尚未有使用者自行定義 superglobals 的功能。〉我們將在下面列出 superglobals,但要知道它們的內容和 PHP 預設變數的深入討論,請參考<link linkend="reserved.variables">保留的先前定義變數</link>[EMAIL PROTECTED]|留意舊有的預設變數 (<varname>$HTTP_*_VARS</varname>) 仍然存在。 + &avail.register-long-arrays; </simpara> <note> - <title>Variable variables</title> + <title>可變變數</title> <para> - Superglobals cannot be used as - <link linkend="language.variables.variable">variable variables</link>. + Superglobals 不能當作<link linkend="language.variables.variable">可變變數</link>來使用。 </para> </note> <para> - If certain variables in <link - linkend="ini.variables-order">variables_order</link> are not set, their - appropriate PHP predefined arrays are also left empty. + 如果某些 <link linkend="ini.variables-order">variables_order</link> 中的變數沒有被設定,它們相對的 PHP 預設陳列也將會是空的。 </para> <variablelist id="language.variables.superglobals"> - <title>PHP Superglobals</title> + <title>PHP 的 Superglobals</title> <varlistentry> <term><link linkend="reserved.variables.globals">$GLOBALS</link></term> <listitem> <simpara> - Contains a reference to every variable which is currently - available within the global scope of the script. The keys of - this array are the names of the global variables. - <varname>$GLOBALS</varname> has existed since PHP 3. + [EMAIL PROTECTED]<varname>$GLOBALS</varname> 自 PHP 3 開始就已存在。 </simpara> </listitem> </varlistentry> @@ -202,10 +135,7 @@ <term><link linkend="reserved.variables.server">$_SERVER</link></term> <listitem> <simpara> - Variables set by the web server or otherwise directly related - to the execution environment of the current script. Analogous - to the old <varname>$HTTP_SERVER_VARS</varname> array (which is - still available, but deprecated). + 由網頁伺服器設定的變數或目前的程式所執行的環境產生的變數。其性質類似舊有的 <varname>$HTTP_SERVER_VARS</varname> 陳列,雖然目前還可以使用,但不被建議。 </simpara> </listitem> </varlistentry> @@ -213,9 +143,7 @@ <term><link linkend="reserved.variables.get">$_GET</link></term> <listitem> <simpara> - Variables provided to the script via HTTP GET. Analogous to the - old <varname>$HTTP_GET_VARS</varname> array (which is still - available, but deprecated). + 通過 HTTP GET 提供給程式的變數。其性質類似舊有的 <varname>$HTTP_GET_VARS</varname> 陳列,雖然目前還可以使用,但不被建議。 </simpara> </listitem> </varlistentry> @@ -223,9 +151,7 @@ <term><link linkend="reserved.variables.post">$_POST</link></term> <listitem> <simpara> - Variables provided to the script via HTTP POST. Analogous to the - old <varname>$HTTP_POST_VARS</varname> array (which is still - available, but deprecated). + 通過 HTTP POST 提供給程式的變數。其性質類似舊有的 <varname>$HTTP_POST_VARS</varname>陳列,雖然目前還可以使用,但不被建議。 </simpara> </listitem> </varlistentry> @@ -233,9 +159,7 @@ <term><link linkend="reserved.variables.cookies">$_COOKIE</link></term> <listitem> <simpara> - Variables provided to the script via HTTP cookies. Analogous to - the old <varname>$HTTP_COOKIE_VARS</varname> array (which is - still available, but deprecated). + 通過 HTTP cookies 提供給程式的變數。其性質類似舊有的 <varname>$HTTP_COOKIE_VARS</varname>陳列,雖然目前還可以使用,但不被建議。 </simpara> </listitem> </varlistentry> @@ -243,12 +167,7 @@ <term><link linkend="reserved.variables.files">$_FILES</link></term> <listitem> <simpara> - Variables provided to the script via HTTP post file - uploads. Analogous to the old - <varname>$HTTP_POST_FILES</varname> array (which is still - available, but deprecated). See <link - linkend="features.file-upload.post-method">POST method - uploads</link> for more information. + 通過 HTTP POST 檔案上傳提供給程式的變數。其性質類似舊有的 <varname>$HTTP_POST_FILES</varname>陳列,雖然目前還可以使用,但不被建議。詳情請參閱 <link linkend="features.file-upload.post-method">POST 上傳方式</link>。 </simpara> </listitem> </varlistentry> @@ -256,9 +175,7 @@ <term><link linkend="reserved.variables.environment">$_ENV</link></term> <listitem> <simpara> - Variables provided to the script via the environment. Analogous - to the old <varname>$HTTP_ENV_VARS</varname> array (which is - still available, but deprecated). + 執行環境提供給程式的變數。其性質類似舊有的 <varname>$HTTP_ENV_VARS</varname>陳列,雖然目前還可以使用,但不被建議。 </simpara> </listitem> </varlistentry> @@ -266,20 +183,11 @@ <term><link linkend="reserved.variables.request">$_REQUEST</link></term> <listitem> <simpara> - Variables provided to the script via any user input mechanism, - and which therefore cannot be trusted. The presence and order - of variable inclusion in this array is defined according to the <link - linkend="ini.variables-order">variables_order</link> - configuration directive. This array has no direct analogue in - versions of PHP prior to 4.1.0. See also - <function>import_request_variables</function>. + 通過任何使用者輸入途徑而提供給程式的變數,也正因如此不值得信任。此陳列中變數的存在與否及次序是決定於 <link linkend="ini.variables-order">variables_order</link> 的設定。PHP 4.1.0 之前的版本並沒有類似此陳列的變數。請同時參閱 <function>import_request_variables</function>。 </simpara> <note> <simpara> - When running on the <link linkend="features.commandline">command line - </link>, this will <emphasis>not</emphasis> include the - <varname>argv</varname> and <varname>argc</varname> entries; these are - present in the <varname>$_SERVER</varname> array. + 在<link linkend="features.commandline">指令行</link>模式下執行時,它並<emphasis>不</emphasis>包含 <varname>argv</varname> 和 <varname>argc</varname> 項目。此兩項目只在 <varname>$_SERVER</varname> 陳列中出現。 </simpara> </note> </listitem> @@ -288,12 +196,7 @@ <term><link linkend="reserved.variables.session">$_SESSION</link></term> <listitem> <simpara> - Variables which are currently registered to a script's - session. Analogous to the old - <varname>$HTTP_SESSION_VARS</varname> array (which is still - available, but deprecated). See the <link - linkend="ref.session">Session handling functions</link> section - for more information. + 目前和程式注冊了的 session 變數。其性質類似舊有的 <varname>$HTTP_SESSION_VARS</varname>陳列,雖然目前還可以使用,但不被建議。詳情請參閱 <link linkend="ref.session">Session 處理函數</link>[EMAIL PROTECTED] </simpara> </listitem> </varlistentry> @@ -303,13 +206,10 @@ <sect1 id="language.variables.scope"> - <title>Variable scope</title> + <title>變數範圍</title> <simpara> - The scope of a variable is the context within which it is defined. - For the most part all PHP variables only have a single scope. - This single scope spans included and required files as well. For - example: + 變數的範圍只是在其所定義的空間內存在。在大部份的情況下,PHP [EMAIL PROTECTED]@[EMAIL PROTECTED] include 和 require 方式引入的檔案。例如: </simpara> <informalexample> <programlisting role="php"> @@ -322,11 +222,7 @@ </programlisting> </informalexample> <simpara> - Here the <varname>$a</varname> variable will be available within - the included <filename>b.inc</filename> script. However, within - user-defined functions a local function scope is introduced. Any - variable used inside a function is by default limited to the local - function scope. For example: + 例子中,變數 <varname>$a</varname> 也存在于被包含入的程式 <filename>b.inc</filename> [EMAIL PROTECTED] </simpara> <informalexample> @@ -347,16 +243,7 @@ </informalexample> <simpara> - This script will not produce any output because the echo statement - refers to a local version of the <varname>$a</varname> variable, - and it has not been assigned a value within this scope. You may - notice that this is a little bit different from the C language in - that global variables in C are automatically available to - functions unless specifically overridden by a local definition. - This can cause some problems in that people may inadvertently - change a global variable. In PHP global variables must be - declared global inside a function if they are going to be used in - that function. An example: + 這個程式不會輸出任何東西,因為 echo 述句使用了本區域版本的 <varname>$a</varname> [EMAIL PROTECTED]|發現這和 C 語言的做法不同,因為 C 的全域變數是自動的提供給各函數,除非在本域定義中指明撤銷。此做法可能會[EMAIL PROTECTED] PHP 中,全域變數在本域使用前必須先宣佈為全域。例子: </simpara> <informalexample> @@ -381,17 +268,11 @@ </informalexample> <simpara> - The above script will output "3". By declaring - <varname>$a</varname> and <varname>$b</varname> global within the - function, all references to either variable will refer to the - global version. There is no limit to the number of global - variables that can be manipulated by a function. + 上述例子將會輸出 "3"。在函數內宣佈 <varname>$a</varname> 及 <varname>$b</varname> 為全域後,所有涉及該兩個變數的使用將自動指向全域的版本。PHP [EMAIL PROTECTED] </simpara> <simpara> - A second way to access variables from the global scope is to use - the special PHP-defined <varname>$GLOBALS</varname> array. The - previous example can be rewritten as: + [EMAIL PROTECTED] PHP 特別定義的陳列:<varname>$GLOBALS</varname>。前面的例子可以重寫為: </simpara> <informalexample> @@ -414,13 +295,7 @@ </informalexample> <simpara> - The <varname>$GLOBALS</varname> array is an associative array with - the name of the global variable being the key and the contents of - that variable being the value of the array element. - Notice how <varname>$GLOBALS</varname> exists in any scope, this - is because $GLOBALS is a <link - linkend="language.variables.superglobals">superglobal</link>. - Here's an example demonstrating the power of superglobals: + <varname>$GLOBALS</varname> [EMAIL PROTECTED] (associative array),全域變數的名即為索引鍵,而該變數的內容即為陳列的值。有否留意到 <varname>$GLOBALS</varname> [EMAIL PROTECTED] $GLOBALS [EMAIL PROTECTED]<link linkend="language.variables.superglobals">superglobal</link>[EMAIL PROTECTED] superglobals 強大功能的例子: </simpara> <para> @@ -448,11 +323,7 @@ </para> <simpara> - Another important feature of variable scoping is the - <emphasis>static</emphasis> variable. A static variable exists - only in a local function scope, but it does not lose its value - when program execution leaves this scope. Consider the following - example: + [EMAIL PROTECTED]<emphasis>靜態</emphasis>變數。靜態變數只在本域函數範圍內存在,但是當程式執行離開此範圍時,它並不會喪失它的值。看看下面的例子: </simpara> <informalexample> @@ -471,13 +342,7 @@ </informalexample> <simpara> - This function is quite useless since every time it is called it - sets <varname>$a</varname> to <literal>0</literal> and prints - "0". The <varname>$a</varname>++ which increments the - variable serves no purpose since as soon as the function exits the - <varname>$a</varname> variable disappears. To make a useful - counting function which will not lose track of the current count, - the <varname>$a</varname> variable is declared static: + [EMAIL PROTECTED] <varname>$a</varname> 設為 <literal>0</literal> 然後列印出 "0"。<varname>$a</varname>++ 增加了 <varname>$a</varname> [EMAIL PROTECTED] <varname>$a</varname> [EMAIL PROTECTED]|丟失當前計數的計數函數,我們可以將 <varname>$a</varname>宣佈為靜態: </simpara> <informalexample> @@ -496,18 +361,11 @@ </informalexample> <simpara> - Now, every time the Test() function is called it will print the - value of <varname>$a</varname> and increment it. + 現在,每當函數 Test() 被呼叫時,它會列印出 <varname>$a</varname> [EMAIL PROTECTED] </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: + [EMAIL PROTECTED]@種呼叫自己的函數。編寫遞迴函數時必須留意,因為若編寫錯誤,它有可能會無定限地遞迴。您必須確定足夠的方式來終止遞迴。下列簡單的函數將遞迴地數到 10,利用靜態變數 <varname>$count</varname> 來斷定什麼時候停止: </simpara> <informalexample> @@ -531,12 +389,7 @@ </informalexample> <simpara> - The Zend Engine 1, driving <literal>PHP4</literal>, implements the - <literal>static</literal> and <literal>global</literal> modifier for - variables in terms of references. For example, a true global variable - imported inside a function scope with the <literal>global</literal> - statement actually creates a reference to the global variable. This can - lead to unexpected behaviour which the following example addresses: + 驅動 <literal>PHP 4</literal> 的 Zend Engine 1 是以參照的方式來實現 <literal>static</literal> 和 <literal>global</literal> [EMAIL PROTECTED] <literal>global</literal> [EMAIL PROTECTED]@[EMAIL PROTECTED] </simpara> <informalexample> @@ -563,7 +416,7 @@ </informalexample> <simpara> - Executing this example will result in the following output: + 執行這個例子將會導致下列的輸出: </simpara> <screen> @@ -573,8 +426,7 @@ </screen> <simpara> - A similar behaviour applies to the <literal>static</literal> statement. - References are not stored statically: + <literal>static</literal> 陳述式也會導致同樣的輸出。參照並沒有被靜態地儲存: </simpara> <informalexample> @@ -618,7 +470,7 @@ </informalexample> <simpara> - Executing this example will result in the following output: + 執行此例子將導致下列的輸出: </simpara> <screen> @@ -633,21 +485,17 @@ </screen> <simpara> - This example demonstrates that when assigning a reference to a static - variable, it's not <emphasis>remembered</emphasis> when you call the - <literal>&get_instance_ref()</literal> function a second time. + [EMAIL PROTECTED]@個靜態變數後,當您第二次呼叫 <literal>&get_instance_ref()</literal> 函數時,它是<emphasis>不會</emphasis>記住之前的值的。 </simpara> </sect1> <sect1 id="language.variables.variable"> - <title>Variable variables</title> + <title>可變變數</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: + 有時候,可以使用可變變數會[EMAIL PROTECTED]@[EMAIL PROTECTED] </simpara> <informalexample> @@ -661,10 +509,7 @@ </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. + [EMAIL PROTECTED]@[EMAIL PROTECTED] $ 在 <emphasis>hello</emphasis> [EMAIL PROTECTED]@個變數的名來使用了。即: </simpara> <informalexample> @@ -678,10 +523,7 @@ </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: + 這時,有兩個變數被定義然後儲存在 PHP 的符號表中:含有 "hello" 的 <varname>$a</varname> 及含有 "world" 的 <varname>$hello</varname>。所以,此敘述: </simpara> <informalexample> @@ -695,7 +537,7 @@ </informalexample> <simpara> - produces the exact same output as: + 與下列這句有著同樣的輸出: </simpara> <informalexample> @@ -709,48 +551,34 @@ </informalexample> <simpara> - i.e. they both produce: <computeroutput>hello world</computeroutput>. + 即,它們都輸出:<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. + [EMAIL PROTECTED] <varname>$$a[1]</varname>,那剖析器必須知道您是想當 <varname>$a[1]</varname> 是變數來使用,還是當 <varname>$$a</varname> 是變數,然後指向那個變數的第 [1] [EMAIL PROTECTED] <varname>${$a[1]}</varname>、第二個情況使用 <varname>${$a}[1]</varname>。 </simpara> <warning> <simpara> - Please note that variable variables cannot be used with PHP's - <link linkend="language.variables.superglobals">Superglobal arrays</link>. - This means you cannot do things like <varname>${$_GET}</varname>. If you are - looking for a way to handle availability of superglobals and the old - <varname>HTTP_*_VARS</varname>, you might want to try - <link linkend="language.references">referencing</link> them. + 必須留意的是,可變變數是不能使用於 PHP 的 <link linkend="language.variables.superglobals">Superglobal 陳列</link>。這表示您不能使用 <varname>${$_GET}</varname> 這樣的敘述。如果您真的想使用 superglobals 和舊的 <varname>HTTP_*_VARS</varname>,您可以嘗試以<link linkend="language.references">參照</link>的方式使用。 </simpara> </warning> </sect1> <sect1 id="language.variables.external"> - <title>Variables from outside PHP</title> + <title>來自 PHP 以外的變數</title> <sect2 id="language.variables.external.form"> - <title>HTML Forms (GET and POST)</title> + <title>HTML 表單 (GET 和POST)</title> <simpara> - When a form is submitted to a PHP script, the information from - that form is automatically made available to the script. There - are many ways to access this information, for example: + [EMAIL PROTECTED] PHP 程式時,表單內的資訊將自動提供給該程式。我們有很多方法存取這些資訊,範例: </simpara> <para> <example> - <title>A simple HTML form</title> + <title>[EMAIL PROTECTED] HTML 表單</title> <programlisting role="html"> <![CDATA[ <form action="foo.php" method="post"> @@ -764,13 +592,12 @@ </para> <para> - Depending on your particular setup and personal preferences, there - are many ways to access data from your HTML forms. Some examples are: + 根據您的安裝方式和個人偏好,PHP 提供多種方式存取 HTML [EMAIL PROTECTED] </para> <para> <example> - <title>Accessing data from a simple POST HTML form</title> + <title>[EMAIL PROTECTED] POST 方式傳送的簡單 HTML 表單</title> <programlisting role="html"> <![CDATA[ <?php @@ -782,7 +609,7 @@ import_request_variables('p', 'p_'); print $p_username; -// Available since PHP 3. As of PHP 5.0.0, these long predefined +// Available since PHP 3. As of PHP 5.0.0, these long predefined // variables can be disabled with the register_long_arrays directive. print $HTTP_POST_VARS['username']; @@ -798,55 +625,33 @@ </example> </para> <para> - Using a GET form is similar except you'll use the appropriate - GET predefined variable instead. GET also applies to the - QUERY_STRING (the information after the '?' in an URL). So, - for example, <literal>http://www.example.com/test.php?id=3</literal> - contains GET data which is accessible with <varname>$_GET['id']</varname>. - See also <link linkend="reserved.variables.request">$_REQUEST</link> and - <function>import_request_variables</function>. + 使用 GET 方式傳送的表單用法類似,只不過使用合適的先前定義的函數。GET 也可使用在查詢字串 (QUERY_STRING) 〈URL 中問號 '?' 後面的資訊〉。例如,<literal>http://www.example.com/test.php?id=3</literal> 含有以 <varname>$_GET['id']</varname> 方式存取的 GET 資料。請參考 <link linkend="reserved.variables.request">$_REQUEST</link> 和 <function>import_request_variables()</function>。 </para> <note> <para> - <link linkend="language.variables.superglobals">Superglobal arrays</link>, - like <varname>$_POST</varname> and <varname>$_GET</varname>, became - available in PHP 4.1.0 + <link linkend="language.variables.superglobals">Superglobal 陳列</link>如 <varname>$_POST</varname> 及 <varname>$_GET</varname> 在 PHP 版本 4.1.0 以上才開始提供。 </para> </note> <para> - As shown, before PHP 4.2.0 the default value for <link - linkend="ini.register-globals">register_globals</link> - was <emphasis>on</emphasis>. And, in PHP 3 it was always on. The PHP - community is encouraging all to not rely on this directive - as it's preferred to assume it's <emphasis>off</emphasis> and code - accordingly. + 上面提到,在 PHP 4.2.0 之前的版本中,<link linkend="ini.register-globals">register_globals</link> 的預設值是 <emphasis>on</emphasis>。而在 PHP 3 中,它永遠是 on [EMAIL PROTECTED] <emphasis>off</emphasis> 來設計您的程式。 </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. See also - <function>addslashes</function>, <function>stripslashes</function> and - <link linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>. + <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> 組態指令會影響到 Get,Post 和 Cookie 的值。如果開啟此指令,(It's "PHP!") 的值將變成 (It\'s \"PHP!\")[EMAIL PROTECTED] <function>addslashes</function>,<function>stripslashes</function> 和 <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. For - example, let's post a form to itself and upon submission display - the data: + PHP 也懂得處理陳列式的表單變數〈請參觀相關的 <link linkend="faq.html">FAQ</link>〉。您可以將相關的變數歸類,或用此功能來取回多元選擇輸入表單的值。在下列範例中,我們將表單張貼到它自己,並在傳送後把資料顯示出來: + </simpara> <para> <example> - <title>More complex form variables</title> + <title>更複雜的表單變數</title> <programlisting role="php"> <![CDATA[ <?php @@ -880,16 +685,14 @@ </para> <para> - In PHP 3, the array form variable usage is limited to - single-dimensional arrays. In PHP 4, no such restriction applies. + PHP 3 [EMAIL PROTECTED] PHP 4 則沒有此限制。 </para> <sect3 id="language.variables.external.form.submit"> - <title>IMAGE SUBMIT variable names</title> + <title>IMAGE SUBMIT 變數名稱</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> @@ -901,13 +704,7 @@ </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. + [EMAIL PROTECTED]@下,伴隨的表單就會傳送到伺服器,隨其而來還附加了兩個變數,sub_x 和 sub_y。這包含了使用者按在圖像的座標。有經驗的使用者或許知道由瀏覽器傳送來的變數名稱應該包含句號,而不是底線,但 PHP 自動地將句號轉換成為底線。 </simpara> </sect3> @@ -917,24 +714,12 @@ <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. Cookie data - is then available in the appropriate cookie data arrays, such - as <varname>$_COOKIE</varname>, <varname>$HTTP_COOKIE_VARS</varname> - as well as in <varname>$_REQUEST</varname>. See the - <function>setcookie</function> manual page for more details and - examples. + PHP 絕對支援 <ulink + url="&spec.cookies;">Netscape規格</ulink>的 HTTP cookies。Cookies 是用來將資料儲存在用戶端的瀏覽器中,以便日後追蹤或識別返回的使用者。您可以用 <function>setcookie()</function> 函數來設定 cookies。Cookies 是 HTTP header [EMAIL PROTECTED] SetCookie [EMAIL PROTECTED] <function>header()</function> 函數有著相同的限定。Cookie 資料可以在 <varname>$_COOKIE</varname>,<varname>$HTTP_COOKIE_VARS</varname> 及 <varname>$_REQUEST</varname> 陳列中供使用。詳情和範例請參考手冊的 <function>setcookie()</function> 部份。 </simpara> <simpara> - If you wish to assign multiple values to a single cookie variable, you - may assign it as an array. For example: + [EMAIL PROTECTED] cookie 變數,那您就要使用陳列來指派了。範例: </simpara> <informalexample> @@ -949,21 +734,15 @@ </informalexample> <simpara> - That will create two seperate cookies although MyCookie will now - be a single array in your script. If you want to set just one cookie - with multiple values, consider using <function>serialize</function> or - <function>explode</function> on the value first. + 這將會建立兩個個別的 cookies,儘管現在 [EMAIL PROTECTED]@個 cookie 建立多個值,那您可先對那些值使用 <function>serialize()</function> 或 <function>explode()</function> 函數。 </simpara> <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. + [EMAIL PROTECTED]@個 cookie 將會[EMAIL PROTECTED] cookie,除非該 cookie 的路徑[EMAIL PROTECTED] </simpara> <example> - <title>A <function>setcookie</function> example</title> + <title>[EMAIL PROTECTED] <function>setcookie()</function> 的範例</title> <programlisting role="php"> <![CDATA[ <?php @@ -978,13 +757,11 @@ </sect2> <sect2 id="language.variables.external.dot-in-names"> - <title>Dots in incoming variable names</title> + <title>在變數名字中的句號 (dots)</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: + [EMAIL PROTECTED] 並不會更改傳入程式的變數名稱。然而,您必須留意句號 (.) [EMAIL PROTECTED] PHP 變數名稱字元,正如: + <programlisting role="php"> <![CDATA[ <?php @@ -992,34 +769,20 @@ ?> ]]> </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. + [EMAIL PROTECTED] <varname>$varname</varname> 的變數,跟隨著字串連結運算子 (.)[EMAIL PROTECTED]|帶來您想要的結果。 </para> <para> - For this reason, it is important to note that PHP will - automatically replace any dots in incoming variable names with - underscores. + 正因如此,PHP 會自動的將傳入的變數名稱中的句號 (.) 改為底線 (_)。 </para> </sect2> <sect2 id="language.variables.determining-type-of"> - <title>Determining variable types</title> + <title>判定變數的類型</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, such as: - <function>gettype</function>, <function>is_array</function>, - <function>is_float</function>, <function>is_int</function>, - <function>is_object</function>, and - <function>is_string</function>. See also the chapter on - <link linkend="language.types">Types</link>. + 由於 PHP 會[EMAIL PROTECTED] 提供了幾個判定變數類型的函數:<function>gettype()</function>、<function>is_array()</function>、<function>is_float()</function>、<function>is_int()</function>、<function>is_object()</function> 及 <function>is_string()</function>。請參閱<link linkend="language.types">類型</link>[EMAIL PROTECTED] </para> </sect2> @@ -1046,4 +809,4 @@ vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 ---> +--> \ No newline at end of file
-- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php