十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
輸出就可以了: var_dump(變量); 結(jié)構(gòu)和數(shù)據(jù)類型看的一清二楚。最最常用的就是輸出
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供肅州網(wǎng)站建設(shè)、肅州做網(wǎng)站、肅州網(wǎng)站設(shè)計(jì)、肅州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、肅州企業(yè)網(wǎng)站模板建站服務(wù),十年肅州做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
變量的定義:在整個(gè)php腳本中可以發(fā)生改變的量叫做變量
變量命名的規(guī)則:
①所有的變量必須用$ 來(lái)修飾
②由字母數(shù)字下劃線組成
③不能用數(shù)字開(kāi)頭
④可以是中文,但一般不用,不能包含特殊字符
⑤變量名區(qū)分大小寫
四種標(biāo)量數(shù)據(jù)類型:整型、實(shí)型(浮點(diǎn)型) 字符型布爾型
兩種特殊類型:資源 NULL
兩種復(fù)合數(shù)據(jù)類型:數(shù)組和對(duì)象
常量定義:在整個(gè)程序運(yùn)行過(guò)程中其值不發(fā)生改變的量,切記常量不加$
例如:define(“A”,10); echo A; 輸出10
Defined(常量名) //檢測(cè)常量是否被設(shè)置
常量可以一旦被定義不能被修改,在整個(gè)運(yùn)行過(guò)程中不可以改變的量
變量可 以改變的量,常量占內(nèi)存,變量不占內(nèi)存 因?yàn)樽兞吭谀_本執(zhí)行結(jié)束時(shí)會(huì)自動(dòng)釋放
PHP沒(méi)有你說(shuō)的這個(gè)類型哦。如果要查看一個(gè)對(duì)象類型的類名稱,可以這樣:
echo get_class ($a);
PHP 支持8種基本的數(shù)據(jù)類型。
四種標(biāo)量類型:
boolean (布爾型)
integer (整型)
float (浮點(diǎn)型, 也稱作 double)
string (字符串)
兩種復(fù)合類型:
array (數(shù)組)
object (對(duì)象)
最后是兩種特殊類型:
resource?。ㄙY源)
NULL?。∟ULL)
變量名 =》 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指針。
is_array — 檢測(cè)變量是否是數(shù)組
is_bool — 檢測(cè)變量是否是布爾型
is_callable — 檢測(cè)參數(shù)是否為合法的可調(diào)用結(jié)構(gòu)
is_double — is_float 的別名
is_float — 檢測(cè)變量是否是浮點(diǎn)型
is_int — 檢測(cè)變量是否是整數(shù)
is_integer — is_int 的別名
is_iterable — Verify that the contents of a variable is an iterable value
is_long — is_int 的別名
is_null — 檢測(cè)變量是否為 NULL
is_numeric — 檢測(cè)變量是否為數(shù)字或數(shù)字字符串
is_object — 檢測(cè)變量是否是一個(gè)對(duì)象
is_real — is_float 的別名
is_resource — 檢測(cè)變量是否為資源類型
is_scalar — 檢測(cè)變量是否是一個(gè)標(biāo)量
is_string — 檢測(cè)變量是否是字符串