php變數前下滑 php 變數 上

2021-10-13 03:16:44 字數 1235 閱讀 8998

學習自tipi,做個小結

###php變數型別

標量型別:boolean,integer,float,string

復合型別:array,object

特殊型別:resource,null

###變數儲存結構

zval結構體定義在zend/zend.**件中,其結構如下:

11/*

* zval

typedef struct _zval_struct zval;

struct _zval_struct str;

hashtable *ht; /* hash table value */

zend_object_value obj;

} zvalue_value;

使用聯合體而不是用結構體是出於空間利用率的考慮,因為乙個變數同時只能屬於一種型別。

一般型別

布林型/整型的變數值儲存於(zval).value.lval中,其型別也會以相應的is_*進行儲存。

實數型儲存於(zval).value.dval中,其型別為is_double。

null值的變數值不需要儲存,只需要把(zval).type標為is_null。z_type_p(z)=is_null;

資源型別的儲存與其他一般變數無異,但其初始化及訪問實現則不同。z_type_p(z) = is_resource; z_lval_p(z) = l;

字串的型別標示和其他資料型別一樣,不過在儲存字串時多了乙個字串長度的字段。

陣列array,最強大變數型別。陣列的值儲存在zvalue_value.ht欄位中,它是乙個hashtable型別的資料。 php的陣列使用雜湊表來儲存關聯資料。雜湊表是一種高效的鍵值對儲存結構。php的雜湊表實現中使用了兩個資料結構hashtable和bucket。 php所有的工作都由雜湊表實現。

物件object,php的物件是一種複合型的資料,使用一種zend_object_value的結構體來存放。

4typedef struct _zend_object_value zend_object_value;

php的物件只有在執行時才會被建立,eg巨集,是乙個全域性結構體用於儲存在執行時的資料。 其中就包括了用來儲存所有被建立的物件的物件池,eg(objects_store),而object物件值內容的zend_object_handle域就是當前 物件在物件池中所在的索引,handlers欄位則是將物件進行操作時的處理函式儲存起來,這個結構體及物件相關的類的結構為zend_class_entry。

php中自變數 PHP 變數

php 變數作用域 變數的作用域是指令碼中變數可被引用和使用的部分,php 中有四種不同的變數作用域 序號作用域 描述local 區域性作用域 global 全域性作用域 static 靜態作用域 parameter 函式引數作用域 1 local 本地的 區域性變數的作用域 在 php 函式內部宣...

PHP變數的變數

什麼叫作變數的變數?根據php手冊,變數的變數是指取得乙個變數的值並把它作為另乙個變數的變數名。這表述顯得相當的直接,容易和那些在乙個句子中使用 變數 這個詞弄混淆。給乙個簡單的例子,你定義乙個變數 x 等於 this 然後定義乙個變數的變數,意味著你把 x 的值作為新變數的名,在這個例子中,這個新...

php宣告變數開頭,php變數宣告

1 什麼是變數?變數就是可變的量,我們可以把它看做是?個容器之所以叫做變數。是因為一旦被宣告後在整個指令碼中都會可以動態的改變變數的值。2 變數的命名規範 1 以 開頭 2 由字母數字下劃線組成,但是不能以數字開頭 3 可以使用中文,但是不推薦使yongoing 4 變數名嚴格區分大小寫 5 變數名...