php變數規範,php基本變數類型

本文目錄一覽:

php變數命名問題

php里命名一個變數以$符打頭,後面跟變數名稱,和其他很多語言一樣,變數名只能以字母、數字、下劃線組成,不能包含空格、標點符號、運算符等其它符號,不能使用程序語言關鍵字作為變數,按照規範的來講的話變數名稱應該要精簡,且有寓意。

PHP的變數名長度最長允許多少啊?

PHP變數名長度是不受限制的。

可以任意的長。

回答了把,不過建議開發時候還是採取比較容易理解和簡短的名字。

PHP定義空變數的意義

變數用於存儲值,比如數字、文本字元串或數組。

一旦設置了某個變數,我們就可以在腳本中重複地使用它。

PHP 中的所有變數都是以 $ 符號開始的。

在 PHP 中設置變數的正確方法是:

$var_name = value;PHP 的入門者往往會忘記在變數的前面的 $ 符號。如果那樣做的話,變數將是無效的。

讓我們試著創建一個存有字元串的變數,和一個存有數值的變數:

如果對於變數和常量的定義,你會注意幾個方面呢?你可能會想到:

如何定義變數,它和C# 等語言有什麼不同呢?

變數區分大小寫嗎?

PHP的變數還有其他重要的嗎?

常量和變數的定義一樣嗎?

分別講述吧。

1.如何定義變數,它和C# 等語言有什麼不同呢?

PHP 中的變數用一個美元符號後面跟變數名來表示。變數名是區分大小寫的。例如:

?php教程

$var=’Jim’;

$VAR=’Kimi;

echo “$var,$VAR”;//輸出「Jim,Kimi”

?你可能還關心變數的命名,其實和大多數語言一樣。

2. 變數區分大小寫嗎?

如 1里說的,區分大小寫。

注意,需要說明的一點是自PHP4以來,引入了引用賦值的概念,其實和多數語言的引用類似,不過我覺得最類似的是C/C++.因為它也用到了””符號。例如: 1 ?php

2 $foo = ‘Bob’; // 賦值’Bob’給foo

3 $bar = $foo; // 通過$bar引用.注意符號

4 $bar = “My name is $bar”; // 修改 $bar

5 echo $bar;

6 echo $foo; // $foo 也修改了.

7 ? 和其他語言一樣,只能對有變數名的變數才可以引用。

3. PHP其他重要點

預定義變數

預定義變數在PHP是一個重要的概念。 PHP 提供了大量的預定義變數。由於許多這些變數依賴於運行的伺服器的版本和設置,及其它因素,所以並沒有詳細的說明文檔。一些預定義變數在 PHP 以命令行形式運行時並不生效。

需要注意的是 在PHP 4.2.0 以及後續版本中,PHP 指令 register_globals 的默認值為 off。這是 PHP 的一個主要變化。讓 register_globals 的值為 off 將影響到預定義變數集在全局範圍內的有效性。例如,為了得到 DOCUMENT_ROOT 的值,將必須使用 $_SERVER[‘DOCUMENT_ROOT’] 代替 $DOCUMENT_ROOT,又如,使用 $_GET[‘id’] 來代替 $id 從 URL 中獲取 id 值,亦或使用 $_ENV[‘HOME’] 來代替 $HOME 獲取環境變數 HOME 的值。

從 PHP 4.1.0 開始,PHP 提供了一套附加的預定數組,這些數組變數包含了來自 web 伺服器(如果可用),運行環境,和用戶輸入的數據。這些數組非常特別,它們在全局範圍內自動生效,例如,在任何範圍內自動生效。因此通常被稱為自動全局變數(autoglobals)或者超全局變數(superglobals)。(PHP 中沒有用戶自定義超全局變數的機制。)超全局變數羅列於下文中;而且,你也將注意到舊的預定義數組($HTTP_*_VARS)仍舊存在。自 PHP 5.0.0 起,長格式的 PHP 預定義變數可以通過設置 register_long_arrays 來屏蔽。

下表是PHP的超全局變數:

超全局變數

描述

$GLOBALS 包含一個引用指向每個當前腳本的全局範圍內有效的變數。該數組的鍵名為全局變數的名稱。從 PHP 3 開始存在 $GLOBALS 數組。

$_SERVER 變數由 web 伺服器設定或者直接與當前腳本的執行環境相關聯。類似於舊數組 $HTTP_SERVER_VARS 數組(依然有效,但反對使用)。

$_GET 經由 URL 請求提交至腳本的變數。類似於舊數組 $HTTP_GET_VARS 數組(依然有效,但反對使用)。

$_POST 經由 HTTP POST 方法提交至腳本的變數。類似於舊數組 $HTTP_POST_VARS 數組(依然有效,但反對使用)。

$_COOKIE 經由 HTTP Cookies 方法提交至腳本的變數。類似於舊數組 $HTTP_COOKIE_VARS 數組(依然有效,但反對使用)。

$_FILES 經由 HTTP POST 文件上傳而提交至腳本的變數。類似於舊數組 $HTTP_POST_FILES 數組(依然有效,但反對使用)

$_ENV 執行環境提交至腳本的變數。類似於舊數組 $HTTP_ENV_VARS 數組(依然有效,但反對使用)。

$_REQUEST 經由 GET,POST 和 COOKIE 機制提交至腳本的變數,因此該數組並不值得信任。所有包含在該數組中的變數的存在與否以及變數的順序均按照 php.ini 中的 variables_order 配置指示來定義。此數組在 PHP 4.1.0 之前沒有直接對應的版本。參見 import_request_variables()。

$_SESSION 當前註冊給腳本會話的變數。類似於舊數組 $HTTP_SESSION_VARS 數組(依然有效,但反對使用)

變數的應用範圍

每個變數都有應用範圍,那麼PHP是怎麼定義的呢?還是先看看下面代碼吧:

1 ?php

2 $var=0;

3 function test($index)

4 {

5 $var=$var+1;

6 echo “The “.$index.” number is “.$var.”br”;

7 }

8 test(1);

9 test(2)

10 ?你認為以上的代碼會顯示什麼結果呢?

如果你認為是下面:

結果1:

The 1 number is 1

The 2 number is 2不好意思,你的結果是錯誤的。

其實正確的結果應該是:

結果2

The 1 number is 1

The 2 number is 1那麼你從其中發現了什麼呢?我們可以知道雖然第2行的代碼定義在外面,但第5行的變數和它是不一樣的。第5行的變數僅在這個函數里使用。進一步的,如果我想調用第一行的變數而顯示結果2.代碼可以如下:

1 ?php

2 $var=0;

3 function test($index)

4 {

5 global $var;

6 $var=$var+1;

7 echo “The “.$index.” number is “.$var.”br”;

8 }

9 test(1);

10 test(2)

11 ?這個代碼段和上面的代碼段有何區別呢?注意第5行,多了一個global關鍵字。明白了吧。

那麼還有沒有其他方法呢?答案是肯定的。

代碼如下:

1 ?php

2 $var=0;

3 function test($index)

4 {

5

6 $GLOBALS[“var”]=$GLOBALS[“var”]+1;

7 echo “The “.$index.” number is “.$GLOBALS[“var”].”br”;

8 }

9 test(1);

10 test(2)

11 ?代碼有什麼特殊的嗎?那就是用到了$GLOBALS這個超全局變數。

PHP也有靜態變數的說法。不過靜態變數一般用在函數里,只能是局部變數了。看看下面代碼吧:

1 ?php

2 function Test()

3 {

4 static $a = 0;

5 echo $a.”br”;

6 $a++;

7 }

8 Test();

9 Test();

10 ? 結果為

1

2

PHP還有一個相當令人興奮的特性:可變變數

所謂可變變數,就是一個變數的變數名可以動態的設置和使用。

看看下面的例子:

1 ?php

2 $a=”hello”;

3 $hello=”world”;

4 echo $a.” “.$$a;

5 ? 輸出的結果居然是hello,world.太神奇了。$$a其實就是$hello,因為$a的值是hello。

變數就這多了。下面看看常量。

常量

PHP的常量是不是前面加const呢?讓我們看一看。

不是的。在PHP必須用下面的方式定義。

bool define ( string name, mixed value [, bool case_insensitive] )

name 為常量名,value為常量的值。case_insensitive]為大小寫敏感。默認為敏感。例如:

1 ?php

2 define(“CONSTANT”, “Hello world.”);

3 echo CONSTANT; // outputs “Hello world.”

4 echo Constant; // outputs “Constant” and issues a notice.

5

6 define(“GREETING”, “Hello you.”, true);

7 echo GREETING; // outputs “Hello you.”

8 echo Greeting; // outputs “Hello you.”

9

10 ?

常量和變數不同:

常量前面沒有美元符號($);

常量只能用 define() 函數定義,而不能通過賦值語句;

常量可以不用理會變數範圍的規則而在任何地方定義和訪問;

常量一旦定義就不能被重新定義或者取消定義;

常量的值只能是標量。

實例

?php

$txt = “Hello World!”;

$number = 16;

?PHP 是一門鬆散類型的語言(Loosely Typed Language)

在 PHP 中,不需要在設置變數之前聲明該變數。

在上面的例子中,您看到了,不必向 PHP 聲明該變數的數據類型。

根據變數被設置的方式,PHP 會自動地把變數轉換為正確的數據類型。

在強類型的編程語言中,您必須在使用前聲明變數的類型和名稱。

在 PHP 中,變數會在使用時被自動聲明。

?php

//引用

$one=”test”;

two=$one;//相當於傳地址,兩個變數指向一個地址

//動態變數

$one=”######”;

$two=”one”;

$three=”two”;

echo $three.”br”;//輸出”two”

echo $$three.”br”;//輸出”one”

echo $$$three.”br”;//輸出”######”

//php中有8個類型

//4種標量: int integer

// bool boolean

// float,double,real

// string

//2種複合類型: array

// object

//2種特殊類型: 資源類型 resource

// 空類型 null

//整數的聲明

$int=10; //十進位聲明

$int=045;//八進位聲明

$int=0xff;//十六進位聲明

$float=3.14E+5;//科學計數法

$float=3.14E-5;

//一下都是false的情況

$bool=false;

$bool=0;

$bool=0.000;

$bool=null;

$bool=””;

$bool=” “;

$bool=”0″;

$bool=array();

//字元串的聲明

//1.單引號和雙引號都可以聲明字元串

//2.聲明的字元串沒有長度限制

//3.在雙引號的字元串中,既可以直接解析變數,又可以直接使用轉義字元(可以轉義單引號本身,也可以轉義轉義字元””)

//4.在單引號的字元串中,不可以直接解析變數,也不可以使用轉義字元

//5.在雙引號中不能再使用雙引號,在單引號中不能再使用單引號

//6.最好使用單引號,

$str=’aaaaa’;

$str=”aaaa”;

//定界符聲明字元串,大量字元串

//test是自定義的一個字元串,後面不能有任何字元,空格也不可以

//也要以test這個自定義的字元串結束,結束前不能有任何字元

$str=test

this write content……

test;

?

php 變數解析

第一個問題的確需要仔細分析:

①首先,你得知道,在雙引號中的字元串輸出時,變數必須得用它的值取代:如$a=100;

就有”$a”=”100″;

②其次,php在讀雙引號中的內容時,一旦遇到$,就希望找到一個最可能的變數。現在看”A banana is $fruits[banana].”;這一句,php順著$往下找找到了[,[是數組索引的標誌,如果在找到與之配對的]之前不出現非法字元,php很自然的就把整個式子$fruits[banana]當成了整個變數,所以這樣寫是對的

③與②對應的”A banana is $fruits[‘banana’].”;錯在哪應給就清楚了吧?php找到[之後,覺得這是個數組,但緊接著它又找到了’,這是他不能夠接受的,如果它仍舊把$fruits[‘banana’]當做變數,就會出現變數名字裡邊出現非法字元’和’的錯誤。注意這些都是在雙引號裡邊給以討論的

④那為什麼 “A banana is {$fruits[‘banana’]}.”; 就可以呢?因為{}的意思我們應該都了解的,用在語法裡邊{}就像是一個個語句島,除了全局變數和常量,{}裡邊的東西和{}外邊的東西基本是隔絕的,也就是說{}裡邊的語法是不受外邊的雙引號影響的。所以寫法就符合平常的語法了

⑤其實{$fruits[‘banana’]}是正確的而{$fruits[banana]}是錯誤的,但為什麼php不報錯呢?對php而言,數組的[]裡邊只能是字元串和int值,那麼$fruits[banana]是什麼呢?php裡邊帶$的是變數,加單引號或者雙引號的是字元串,那麼banana會是什麼呢?對了,是常量!php覺得你這裡寫的banana是個值可能為int或字元串的常量,所以它覺得寫的挺合理的。但是你實際上並沒有定義這個常量,所以肯定會出錯的

至於你的第二個問題,這是php的字元串連接問題。$fruits[‘banana’]的值是一個字元串,那麼當你把它和另一個字元串”echo A banana is “接在一起的時候肯定的需要特定的符號了。一般的語言用的是+,php用的是.

你直接列印這個字元串當然是可以的了。

怎麼樣?解釋的夠清楚吧?可以給分了吧?呵呵,打字快累死了,要勞有所得啊,還有什麼問題的話聯繫我,我們再討論!

要寫一個PHP,定義一個變數,並設定為指定的網址

把這部分改成指定值並隱藏,就可以了。

!–li strong網址/strong–

input id=”tougao-url” class=”input-block-level” type=”hidden” value=”http://你設置的URL” size=”100″

php全局變數和php預定義變數

僅供參考,更多,可以查看

預定義變數

PHP 提供了大量的預定義變數。由於許多變數依賴於運行的伺服器的版本和設置,及其它因素,所以並沒有詳細的說明文檔。一些預定義變數在 PHP 以命令行形式運行時並不生效。有關這些變數的詳細列表,請參閱預定義變數一章。

Warning

PHP 4.2.0 以及後續版本中,PHP 指令 register_globals 的默認值為 off。這是 PHP 的一個主要變化。讓 register_globals 的值為 off 將影響到預定義變數集在全局範圍內的有效性。例如,為了得到 DOCUMENT_ROOT 的值,將必須使用 $_SERVER[‘DOCUMENT_ROOT’] 代替 $DOCUMENT_ROOT,又如,使用 $_GET[‘id’] 來代替 $id 從 URL 中獲取 id 值,亦或使用 $_ENV[‘HOME’] 來代替 $HOME 獲取環境變數 HOME 的值。

更多相關信息,請閱讀 register_globals 的配置項條目,安全一章中的使用 Register Globals,以及 PHP » 4.1.0 和 » 4.2.0 的發行通告。

如果有可用的 PHP 預定義變數那最好用,如超全局變數。

從 PHP 4.1.0 開始,PHP 提供了一套附加的預定數組,這些數組變數包含了來自 web 伺服器(如果可用),運行環境,和用戶輸入的數據。這些數組非常特別,它們在全局範圍內自動生效,例如,在任何範圍內自動生效。因此通常被稱為自動全局變數(autoglobals)或者超全局變數(superglobals)。(PHP 中沒有用戶自定義超全局變數的機制。)超全局變數羅列於下文中;但是為了得到它們的內容和關於 PHP 預定義變數的進一步的討論以及它們的本質,請參閱預定義變數。而且,你也將注意到舊的預定義數組($HTTP_*_VARS)仍舊存在。自 PHP 5.0.0 起,長格式的 PHP 預定義變數可以通過設置 register_long_arrays 來屏蔽。

Note: 可變變數 超級全局變數不能被用作可變變數。

Note: 儘管超全局變數和 HTTP_*_VARS 同時存在。但是他們並不是同一個變數,所以改變一個的值並不會對另一個產生影響。

如果某些 variables_order 中的變數沒有設定,它們的對應的 PHP 預定義數組也是空的。

PHP 超全局變數

$GLOBALS

包含一個引用指向每個當前腳本的全局範圍內有效的變數。該數組的鍵名為全局變數的名稱。從 PHP 3 開始存在 $GLOBALS 數組。

$_SERVER

變數由 web 伺服器設定或者直接與當前腳本的執行環境相關聯。類似於舊數組 $HTTP_SERVER_VARS 數組(依然有效,但反對使用)。

$_GET

經由 URL 請求提交至腳本的變數。類似於舊數組 $HTTP_GET_VARS 數組(依然有效,但反對使用)。

$_POST

經由 HTTP POST 方法提交至腳本的變數。類似於舊數組 $HTTP_POST_VARS 數組(依然有效,但反對使用)。

$_COOKIE

經由 HTTP Cookies 方法提交至腳本的變數。類似於舊數組 $HTTP_COOKIE_VARS 數組(依然有效,但反對使用)。

$_FILES

經由 HTTP POST 文件上傳而提交至腳本的變數。類似於舊數組 $HTTP_POST_FILES 數組(依然有效,但反對使用)。詳細信息請參閱 POST 方法上傳。

$_ENV

執行環境提交至腳本的變數。類似於舊數組 $HTTP_ENV_VARS 數組(依然有效,但反對使用)。

$_REQUEST

經由 GET,POST 和 COOKIE 機制提交至腳本的變數,因此該數組並不值得信任。所有包含在該數組中的變數的存在與否以及變數的順序均按照 php.ini 中的 variables_order 配置指示來定義。此數組在 PHP 4.1.0 之前沒有直接對應的版本。參見 import_request_variables()。

Caution

自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在於 $_REQUEST 中。

Note: 當運行於命令行模式時,此數組將不會包含 argv 和 argc 條目;它們已經存在於數組 $_SERVER 中。

$_SESSION

當前註冊給腳本會話的變數。類似於舊數組 $HTTP_SESSION_VARS 數組(依然有效,但反對使用)。

原創文章,作者:CEJY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144727.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CEJY的頭像CEJY
上一篇 2024-10-26 11:53
下一篇 2024-10-26 11:53

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • int類型變數的細節與注意事項

    本文將從 int 類型變數的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變數進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變數。 一、定義與聲明 int…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python input參數變數用法介紹

    本文將從多個方面對Python input括弧里參數變數進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Python基本索引用法介紹

    Python基本索引是指通過下標來獲取列表、元組、字元串等數據類型中的元素。下面將從多個方面對Python基本索引進行詳細的闡述。 一、列表(List)的基本索引 列表是Pytho…

    編程 2025-04-29
  • Python基本數字類型

    本文將介紹Python中基本數字類型,包括整型、布爾型、浮點型、複數型,並提供相應的代碼示例以便讀者更好的理解。 一、整型 整型即整數類型,Python中的整型沒有大小限制,所以可…

    編程 2025-04-29
  • Python匿名變數的使用方法

    Python中的匿名變數是指使用「_」來代替變數名的特殊變數。這篇文章將從多個方面介紹匿名變數的使用方法。 一、作為佔位符 匿名變數通常用作佔位符,用於代替一個不需要使用的變數。例…

    編程 2025-04-29
  • Python中的Bool類型判斷

    本篇文章旨在講解Python中的Bool類型判斷。在Python中,Bool類型是經常使用的一種類型,因此掌握其用法非常重要。 一、True和False 在Python中,True…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python基本統計量計算

    本文將從多個方面詳細介紹Python中基本統計量計算的方法。 一、均值 均值是一組數據的平均值,也就是將所有數據相加後再除以數據個數。 在Python中,可以使用numpy庫中的m…

    編程 2025-04-29

發表回復

登錄後才能評論