摘要:變量相關(guān)PHP變量的內(nèi)部實(shí)現(xiàn)編程語(yǔ)言的系統(tǒng)類(lèi)型分為強(qiáng)類(lèi)型和弱類(lèi)型兩種: 強(qiáng)類(lèi)型語(yǔ)言是一旦某個(gè)變量被申明為某個(gè)類(lèi)型的變量,在程序運(yùn)行過(guò)程中,就不能將該變量的類(lèi)型以外的值賦予給它,c/c++/java等語(yǔ)言就屬于這類(lèi) php及ruby,javascript等腳本語(yǔ)言就屬于弱類(lèi)型語(yǔ)言:一個(gè)變量可以表示任意的數(shù)據(jù)類(lèi)型php變量類(lèi)型及存
變量相關(guān)
PHP變量的內(nèi)部實(shí)現(xiàn)
編程語(yǔ)言的系統(tǒng)類(lèi)型分為強(qiáng)類(lèi)型和弱類(lèi)型兩種:
強(qiáng)類(lèi)型語(yǔ)言是一旦某個(gè)變量被申明為某個(gè)類(lèi)型的變量,在程序運(yùn)行過(guò)程中,就不能將該變量的類(lèi)型以外的值賦予給它,c/c++/java等語(yǔ)言就屬于這類(lèi)
php及ruby,javascript等腳本語(yǔ)言就屬于弱類(lèi)型語(yǔ)言:一個(gè)變量可以表示任意的數(shù)據(jù)類(lèi)型
php變量類(lèi)型及存儲(chǔ)結(jié)構(gòu)
php在聲明或使用變量的時(shí)候,并不需要顯式指明其數(shù)據(jù)類(lèi)型
php是弱類(lèi)型語(yǔ)言,這不并表示php沒(méi)有類(lèi)型,在php中,存在8種變量類(lèi)型,可以分為三類(lèi):
標(biāo)量類(lèi)型:boolean,integer,float,string
復(fù)合類(lèi)型:array,object
特殊類(lèi)型:resource,NULL
變量存儲(chǔ)結(jié)構(gòu)
變量的值存儲(chǔ)到一下所示的zval結(jié)構(gòu)體中.其結(jié)構(gòu)如下:
typedef struct _zval_struct zval; struct _zval_struct { zvalue_value value; // 存儲(chǔ)變量的值 zend_uint refcount__gc; // 表示引用計(jì)數(shù) zend_uchar type; // 變量具體的類(lèi)型 zend_uchar is_ref_gc; // 表示是否為引用 };
變量的值存儲(chǔ)在另外一個(gè)結(jié)構(gòu)體zvalue_value中
變量類(lèi)型
zval結(jié)構(gòu)體的type字段就是實(shí)現(xiàn)弱類(lèi)型最關(guān)鍵的字段了,type的值可以為:IS_NULL, IS_BOOL, IS_LONG, IS_DOUBLE, IS_STRING, IS_ARRAY, IS_OBJECT, IS_RESOURCE之一.從字面上就很好理解,他們只是類(lèi)型的唯一標(biāo)示,根據(jù)類(lèi)型的不同將不同的值存儲(chǔ)到value字段
變量值的存儲(chǔ)
前面說(shuō)到變量的值存儲(chǔ)在zvalue_value結(jié)構(gòu)體中,結(jié)構(gòu)體定義如下:
typedef union _zvalue_value { long lval; double dval; struct { char *val; int len; } str; HashTable *ht; zend_object_value obj; } _zvalue_value;
日期相關(guān)
計(jì)算兩個(gè)日期之間的天數(shù)
<?php /** * 求兩個(gè)日期之間相差的天數(shù)(針對(duì)1970年1月1日之后,求之前可以采用泰勒公式) * @param string $day1 * @param string $day2 * @return number */ function diffBetweenTwoDays ($day1, $day2) { $second1 = strtotime($day1); $second2 = strtotime($day2); if ($second1 < $second2) { $tmp = $second2; $second2 = $second1; $second1 = $tmp; } return ($second1 - $second2) / 86400; } $day1 = "2013-07-27"; $day2 = "2013-08-04"; $diff = diffBetweenTwoDays($day1, $day2); echo $diff."\n";
更多關(guān)于PHP的關(guān)于變量和日期處理的一些面試題目整理請(qǐng)關(guān)注PHP中文網(wǎng)(www.miracleart.cn)其他文章!