日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
php變量數(shù)據(jù) 請(qǐng)寫出php中變量有基本數(shù)據(jù)類型

php變量定義方法

PHP語(yǔ)法吸收了C語(yǔ)言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。以下是為大家分享的php變量定義方法,供大家參考借鑒,歡迎瀏覽!

10多年的衡陽(yáng)縣網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整衡陽(yáng)縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“衡陽(yáng)縣網(wǎng)站設(shè)計(jì)”,“衡陽(yáng)縣網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

   1.定義常量define("CONSTANT", "Hello world.");

常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。

調(diào)用常量時(shí),只需要簡(jiǎn)單的用名稱取得常量的值,而不能加“$”符號(hào),如:echo CONSTANT;

注: 常量和(全局)變量在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。

2.普通變量$a = "hello";

3.可變變量(使用兩個(gè)美元符號(hào)($))

$$a = "world";

兩個(gè)變量都被定義了:

$a 的內(nèi)容是“hello”并且 $hello 的內(nèi)容是“world”。

因此,可以表述為:

echo "$a ${$a}";或者 echo "$a $hello";它們都會(huì)輸出:hello world

要將可變變量用于數(shù)組,必須解決一個(gè)模棱兩可的問(wèn)題。這就是當(dāng)寫下 $$a[1] 時(shí),解析器需要知道是想要 $a[1] 作為一個(gè)變量呢,還是想要 $$a 作為一個(gè)變量并取出該變量中索引為 [1] 的值。解決此問(wèn)題的語(yǔ)法是,對(duì)第一種情況用 ${$a[1]},對(duì)第二種情況用 ${$a}[1]。

4.靜態(tài)變量

在函數(shù)內(nèi)部static $a = 0;

注意:聲明中用表達(dá)式的結(jié)果對(duì)其賦值會(huì)導(dǎo)致解析錯(cuò)誤如static $a =3+3;(error)

靜態(tài)變量?jī)H在局部函數(shù)域中存在(函數(shù)內(nèi)部),函數(shù)執(zhí)行完之后,變量值不會(huì)丟失,可用于遞歸調(diào)用

5.全局變量

在函數(shù)體內(nèi)定義的global變量,函數(shù)體外可以使用,在函數(shù)體外定義的global變量不能在函數(shù)體內(nèi)使用,在全局范圍內(nèi)訪問(wèn)變量可以用特殊的 PHP 自定義 $GLOBALS 數(shù)組:

如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];

在一個(gè)函數(shù)域內(nèi)用 global 語(yǔ)句導(dǎo)入的一個(gè)真正的全局變量實(shí)際上是建立了一個(gè)到全局變量的引用

global $obj;

注:對(duì)于變量的 static 和 global 定義是以 應(yīng)用 的方式實(shí)現(xiàn)的

   6.給變量賦值:傳地址賦值(簡(jiǎn)單引用):

$bar = $foo; //加符號(hào)到將要賦值的變量前

改動(dòng)新的變量將影響到原始變量,這種賦值操作更加快速

注意:只有命名變量才可以傳地址賦值

注意:如果

$bar = $a;

$bar = $foo;

改變$bar的值只能改變變量foo的值,而不改變a的值(引用改變了)

   7.PHP 超全局變量$GLOBALS : 包含一個(gè)引用指向每個(gè)當(dāng)前腳本的全局范圍內(nèi)有效的變量。該數(shù)組的鍵標(biāo)為全局變量的 名稱。從 PHP 3 開始存在 $GLOBALS 數(shù)組。

$_SERVER : 變量由 Web 服務(wù)器設(shè)定或者直接與當(dāng)前腳本的執(zhí)行環(huán)境相關(guān)聯(lián)。類似于舊數(shù)組 $HTTP_SERVER_VARS 數(shù)組(依然有效,但反對(duì)使用)。

$_GET : 經(jīng)由 HTTP GET 方法提交至腳本的變量。

$_POST : 經(jīng)由 HTTP POST 方法提交至腳本的變量。

$_COOKIE : 經(jīng)由 HTTP Cookies 方法提交至腳本的變量。

$_FILES : 經(jīng)由 HTTP POST 文件上傳而提交至腳本的變量。

文件上傳表單中要有 enctype="multipart/form-data"

$_ENV : 執(zhí)行環(huán)境提交至腳本的變量。

$_REQUEST :經(jīng)由 GET,POST 和 COOKIE 機(jī)制提交至腳本的.變量,因此該數(shù)組并不值得信任。所有包含在該數(shù)組中的變量的存在與否以及變量的順序均按照 php.ini 中的 variables_order 配置指示來(lái)定義。該數(shù)組沒(méi)有直接模擬 PHP 4.1.0 的早期版本。參見 import_request_variables()。

注意: 自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中。

$_SESSION :當(dāng)前注冊(cè)給腳本會(huì)話的變量。

如何禁用phpinfo():

php.ini中

disable_functions = phpinfo()

重啟web服務(wù)器。

php中的常量

常量只能用define(常量名,常量值);

常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。

可以簡(jiǎn)單的通過(guò)指定其名字來(lái)取得常量的值,不要在常量前面加上 $ 符號(hào)。如果常量名是動(dòng)態(tài)的,也可以用函數(shù)

constant() 來(lái)讀取常量的值。用 get_defined_constants() 可以獲得所有已定義的常量列表。

注: 常量和(全局)變量在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。

如果使用了一個(gè)未定義的常量,PHP 假定想要的是該常量本身的名字,如同用字符串調(diào)用它一樣(CONSTANT 對(duì)應(yīng) "CONSTANT")。此時(shí)將發(fā)出一個(gè) E_NOTICE 級(jí)的錯(cuò)誤。參見手冊(cè)中為什么 $w3sky[bar] 是錯(cuò)誤的(除非事先用 define() 將 bar 定義為一個(gè)常量)。如果只想檢查是否定義了某常量,用 defined() 函數(shù)。

常量和變量不同:

* 常量前面沒(méi)有美元符號(hào)($);

* 常量只能用 define() 函數(shù)定義,而不能通過(guò)賦值語(yǔ)句;

* 常量可以不用理會(huì)變量范圍的規(guī)則而在任何地方定義和訪問(wèn);

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

* 常量的值只能是標(biāo)量。

定義常量

?PHP

define("CONSTANT", "Hello world.");

echo CONSTANT; // outputs "Hello world."

echo Constant; // outputs "Constant" and issues a notice.

?

什么是PHP變量?

常量是一個(gè)簡(jiǎn)單值的標(biāo)識(shí)符(名字)。如同其名稱所暗示的,在腳本執(zhí)行期間該值不能改變(除了所謂的魔術(shù)常量,它們其實(shí)不是常量)。常量默認(rèn)為大小寫敏感。按照慣例常量標(biāo)識(shí)符總是大寫的。(更多PHP知識(shí)相關(guān)推薦閱讀:什么是PHP開發(fā)?PHP開發(fā)都用什么工具?)

常量名和其它任何 PHP 標(biāo)簽遵循同樣的命名規(guī)則。合法的常量名以字母或下劃線開始,后面跟著任何字母,數(shù)字或下劃線。用正則表達(dá)式是這樣表達(dá)的:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

注: 在這里,字母是 a-z,A-Z,以及從 127 到 255(0x7f-0xff)的 ASCII 字符。

和 superglobals 一樣,常量的范圍是全局的。不用管作用域就可以在腳本的任何地方訪問(wèn)常量。有關(guān)作用得更多信息請(qǐng)閱讀手冊(cè)中的變量范圍。

語(yǔ)法

可以用 define() 函數(shù)來(lái)定義常量。一個(gè)常量一旦被定義,就不能再改變或者取消定義。

常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。

可以簡(jiǎn)單的通過(guò)指定其名字來(lái)取得常量的值,不要在常量前面加上 $ 符號(hào)。如果常量名是動(dòng)態(tài)的,也可以用函數(shù) constant() 來(lái)讀取常量的值。用 get_defined_constants() 可以獲得所有已定義的常量列表。

注: 常量和(全局)變量在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。

如果使用了一個(gè)未定義的常量,PHP 假定你想要的是該常量本身的名字,如同你用字符串調(diào)用它一樣(CONSTANT 對(duì)應(yīng) "CONSTANT")。此時(shí)將發(fā)出一個(gè) E_NOTICE 級(jí)的錯(cuò)誤。參見手冊(cè)中為什么 $foo[bar] 是錯(cuò)誤的(除非你事先用 define() 將 bar 定義為一個(gè)常量)。如果你只想檢查是否定義了某常量,用 defined() 函數(shù)。

常量和變量不同:

常量前面沒(méi)有美元符號(hào)($);

常量只能用 define() 函數(shù)定義,而不能通過(guò)賦值語(yǔ)句;

常量可以不用理會(huì)變量范圍的規(guī)則而在任何地方定義和訪問(wèn);

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

常量的值只能是標(biāo)量。

以上來(lái)自上海優(yōu)就業(yè)老師進(jìn)行的總結(jié),關(guān)于上海IT培訓(xùn)PHP開發(fā)更多了解:網(wǎng)頁(yè)鏈接

PHP變量的底層實(shí)現(xiàn)

我們解壓PHP的源碼包, 看到如下的目錄

其中,

最核心的---Zend目錄, 這是zend虛擬的實(shí)現(xiàn). 包括棧,數(shù)據(jù)類型,編譯器等,都在這實(shí)現(xiàn).

最主要的main --PHP的一些內(nèi)建函數(shù),最主要函數(shù)都在這里放著.

最大的一個(gè)目錄ext -- PHP的擴(kuò)展.

PHP的大部分功能,都是以extenstion形式來(lái)完成的.

如果你開發(fā)了一個(gè)擴(kuò)展,也放在ext目錄下.

Zend對(duì)變量的表示:

答: zend實(shí)現(xiàn)了 zval結(jié)構(gòu)體

{

value: [聯(lián)合體] ,聯(lián)合體的內(nèi)容可能是C語(yǔ)言中的long,double,hashtable...

type:變量類型 , IS_NULL,IS_BOOL,IS_STRING...... IS_RESOURCE

refcount_gc

is_ref_gc

}

如:

$a = 3;

{

value : [long lval = 3]

type: IS_LONG

}

$a = 3.5

{

value: [double dval = 3.5]

type:IS_DOUBLE

疑問(wèn):

PHP中有8種數(shù)據(jù)類型,為什么zval-value 聯(lián)合體中,只有5種?

答:

1: NULL,直接 zval-type = IS_NULL,就可以表示,不必設(shè)置 ?value的值.

2: BOOL型 , zval-type = IS_BOOL, 再設(shè)置 zval.value.lval = 1/0;

3: Resourc型 ,資源型 往往是服務(wù)器上打開的一個(gè)接口,如果 文件讀取接口.

zval-type = IS_RESOURCE, zval-tyoe.lval =服務(wù)器上打開的接口的編號(hào)

發(fā)現(xiàn):

PHP中,字符串類型,長(zhǎng)度是已經(jīng)緩存的,調(diào)用strlen時(shí),系統(tǒng)可以直接返回其長(zhǎng)度,不必計(jì)算.

PHP變量名、變量值、類型

變量名 =》 zval

變量值 =》zend_value

問(wèn)題:

引用計(jì)數(shù)

變量傳遞,變量賦值

變量的基礎(chǔ)結(jié)構(gòu)

變量值:zend_value?

typedef union _zend_value {

zend_long? ? ? ? lval;? ? ? ? ? ? /* long value */

double? ? ? ? ? ? dval;? ? ? ? ? ? /* double value */

zend_refcounted? *counted;

zend_string? ? ? *str;

zend_array? ? ? *arr;

zend_object? ? ? *obj;

zend_resource? ? *res;

zend_reference? *ref;

zend_ast_ref? ? *ast;

zval? ? ? ? ? ? *zv;

void? ? ? ? ? ? *ptr;

zend_class_entry *ce;

zend_function? ? *func;

struct {

? uint32_t w1;

? uint32_t w2;

} ww;

} zend_value;

變量名:_zval

typedef struct _zval_struct? ? zval;

struct _zval_struct {

zend_value? ? ? ? value;? ? ? ? /* value */

union {

? struct {

? ? ZEND_ENDIAN_LOHI_4(

? ? ? ? zend_uchar? ? type,? ? ? ? ? /* active type */

? ? ? ? zend_uchar? ? type_flags,

? ? ? ? zend_uchar? ? const_flags,

? ? ? ? zend_uchar? ? reserved)? ? ? ? /* call info for EX(This) */

? } v;

? uint32_t type_info;

} u1;

union {

? uint32_t? ? var_flags;

? uint32_t? ? next;? ? ? ? ? ? ? ? /* hash collision chain */

? uint32_t? ? cache_slot;? ? ? ? ? /* literal cache slot */

? uint32_t? ? lineno;? ? ? ? ? ? ? /* line number (for ast nodes) */

? uint32_t? ? num_args;? ? ? ? ? ? /* arguments number for EX(This) */

? uint32_t? ? fe_pos;? ? ? ? ? ? ? /* foreach position */

? uint32_t? ? fe_iter_idx;? ? ? ? ? /* foreach iterator index */

} u2;

};

變量類型【type】

/* regular data types */

#define IS_UNDEF? ? ? ? ? ? ? 0

#define IS_NULL? ? ? ? ? ? ? ? ? 1

#define IS_FALSE? ? ? ? ? ? ? 2

#define IS_TRUE? ? ? ? ? ? ? ? ? 3

#define IS_LONG? ? ? ? ? ? ? ? ? 4

#define IS_DOUBLE? ? ? ? ? ? ? 5

#define IS_STRING? ? ? ? ? ? ? 6

#define IS_ARRAY? ? ? ? ? ? ? 7

#define IS_OBJECT? ? ? ? ? ? ? 8

#define IS_RESOURCE? ? ? ? ? ? ? ? 9

#define IS_REFERENCE? ? ? ? ? ? 10

/* constant expressions */

#define IS_CONSTANT? ? ? ? ? ? ? ? 11

#define IS_CONSTANT_AST? ? ? ? ? ? 12

/* fake types */

#define _IS_BOOL? ? ? ? ? ? ? 13

#define IS_CALLABLE? ? ? ? ? ? ? ? 14

/* internal types */

#define IS_INDIRECT? ? ? ? ? ? ? ? 15

#define IS_PTR? ? ? ? ? ? ? ? 17

true 和 flase 沒(méi)有zend_value 結(jié)構(gòu), 直接通過(guò)type來(lái)區(qū)分,zend_long和double的變量指直接存儲(chǔ)在_zend_value中,不需要額外的value指針。


分享標(biāo)題:php變量數(shù)據(jù) 請(qǐng)寫出php中變量有基本數(shù)據(jù)類型
本文URL:http://www.dlmjj.cn/article/hpjchc.html