PHP(三)變量、常量

變量即值不斷變化的數據。php

常量即值恆定不變的數據。數組

#變量的類型轉換服務器

在PHP中,變量的類型是能夠任意轉換的,變量定義時不須要明確的類型定義,變量的類型是根據上下文來決定的,當 $sivir 被賦以字符串值, $sivir 就成了字符串類型的變量。當 $sivir 被賦以一個整型值,它就又成了一個整數型變量。session

###類型轉換有自動轉換和強制轉換:函數

####自動轉換性能

一個變量被賦以字符串值,它就是字符串型變量,當它被再次賦以整型值,它就是整型變量。操作系統

以合法數字開始的字符串會把那個數字做爲值先轉換,不然值爲0,含有. e E的轉換成浮點型,反之爲整型。code

代碼:索引

<?php
$foo = "0";
var_dump($foo);
$foo += 2;
var_dump($foo);
$foo = $foo + 1.3;
var_dump($foo);
$foo = 5 + "10 dollars";
var_dump($foo);
?>

效果:內存

string '0' (length=1)
int 2
float 3.3
int 15

####強制轉換

語法:變量 = (目標類型) 變量;

把一個變量轉換類型後賦給另外一個變量。

代碼:

<?php
$foo = 10;
var_dump($foo);
$bar = (boolean) $foo;
var_dump($bar);
?>

效果:

int 10
boolean true

#變量的命名

PHP中的變量用一個美圓符號$後跟變量名來表示,變量名區分大小寫。

#可變變量

可變變量指一個變量的變量名能夠動態地設置和使用。

一個可變變量獲取了一個普通變量的值做爲這個可變變量的變量名,這個變量就叫作可變變量。

在PHP的函數和類的方法中,超全局變量不能夠用做可變變量。

代碼:

<?php
$a = 'hello';  //定義變量`a`並賦值爲「hello」
$$a = 'world';  //定義變量`$$a`並賦值爲「world」
var_dump($$a);  
echo "$$a";
?>

效果:

$hello

#預約義變量

指PHP預先定義好的變量,不須要賦值就能直接使用。

  • $_SEVER:服務器變量,包含頭信息(header)、路徑(path)和腳本位置等組成的數組。

  • $_ENV:環境變量,包含操做系統類型、軟件版本等信息組成的數組。

  • $_COOKIE:HTTP Cookies變量,經過HTTP Cookies傳遞的變量組成的數組。

  • $_GET:HTTP GET變量,經過HTTP GET方法傳遞的變量組成的數組。

  • $_POST:HTTP POST變量,經過HTTP POST方法傳遞的已上傳文件項目組成的數組。

  • $_FILES:HTTP文件上傳變量,經過HTTP POST方法傳遞的已上傳文件項目組成的數組。

  • $_REQUEST:Request變量,次關聯數組包含 $_GET、$_POST和$_COOKIE中的所有內容。

  • $_SESSION:Session變量,包含當前腳本中session變量的數組。

  • $_GLOBALS:全局變量,由全部已定義的全局變量組成的數組。

#外部變量

  • 表單提交的數據

  • HTTP Cookies

在HTML表單中傳來的值被服務器自動轉換爲PHP預約義變量$_POST的數組元素。要訪問這些元素,把表單中的字段名做爲$_POST數組的索引就能夠了,即$_POST['name']

#引用

引用相似於創建桌面快捷方式,在變量前面加上&便可。

如:$c = &$a;

當變量a的值改變時,經過變量c引用的獲得的值夜改變。

另外一種相反的例子:

$b = $a;

相似於上面這種直接把一個變量的值賦給另外一個變量,$b就是$a的拷貝,當後來$a的值改變時,$b的值不會改變。

引用能夠節約內存資源。

#變量的銷燬

在PHP中,變量一般不須要自動銷燬,系統會自動釋放。但對於性能要求比較高的系統來講,自動釋放太慢,達不到高性能的要求,這樣就要求編寫代碼時要及時銷燬一些變量,一般是一些包含大量數據的變量。

銷燬變量有兩種方法:

  • 從新賦值(賦NULL值)

  • 使用 unset() 函數

#常量

常量在程序運行期間不改變它的值,而且常量是全局的,定義了一個常量以後,不用管做用域就能夠在腳本的任何地方訪問常量。

使用 define() 函數定義。

格式:

<?php    
define("Constant","hello");
var_dump(Constant);
?>

效果:

string 'hello' (length=5)

一個常量一旦被定義,就不能再改變或取消定義。

常量與其餘PHP標籤符號遵循一樣的命名規則,常量沒有美圓符號。按慣例來講常量名所有使用大寫字母。

常量類型包括布爾型、整型、浮點型和字符串。

不能定義資源類型的常量。

####常量與變量的區別

  • 常量前面沒有美圓符號$

  • 常量的定義只能經過 define()函數

  • 常量能夠忽略變量範圍的規則而在任何地方定義和訪問

  • 常量一旦被定義就不能被從新定義或取消定義

  • 常量的值只能是標量

#魔術常量

除了上面說的預約義變量以外,PHP中還有比預約義變量更多的預約義常量。而這類預約義常量不少都是由不一樣的擴展庫定義的,只有在加載了擴展庫以後纔會出現,或者在動態加載後,或者在編譯時已經包括進去了。

5個魔術常量

  • __LINE__ 文件中的當前行號。
  • __FILE__ 文件的完整路徑和文件名。若是用在包含文件中,則返回包含文件名。自php4.0.2起,__FILE__老是包含一個絕對路徑,而在此以前的版本有時會包含一個相對路徑。
  • __FUNCTION__ 函數名稱,返回該函數被定義時的名字(php4.3.0新加)。自php5起本常量返回該函數被定義時的名字(區分大小寫)。在php4中該值老是小寫字母的。
  • __CLASS__ 類的名稱,返回該類被定義時的名字(php4.3.0新加)。自php5起本常量返回該類被定義時的名字(區分大小寫)。在php4中該值老是小寫字母的。
  • __METHOD__ 類的方法名,返回該方法被定義時的名字(php5.0.0新加)。返回該方法被定義時的名字(區分大小寫)。
相關文章
相關標籤/搜索