關於變數和日期處理的php面試題

來源:文萃谷 2.17W

變數來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。下面是小編整理的關於變數和日期處理的php面試題,希望對大家面試有用,更多訊息請關注應屆畢業生網。

關於變數和日期處理的php面試題

  變數相關

  PHP變數的內部實現

程式設計語言的系統型別分為強型別和弱型別兩種:

強型別語言是一旦某個變數被申明為某個型別的變數,在程式執行過程中,就不能將該變數的型別以外的.值賦予給它,c/c++/java等語言就屬於這類

php及ruby,javascript等指令碼語言就屬於弱型別語言:一個變數可以表示任意的資料型別

php變數型別及儲存結構

php在宣告或使用變數的時候,並不需要顯式指明其資料型別

php是弱型別語言,這不併表示php沒有型別,在php中,存在8種變數型別,可以分為三類:

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

複合型別:array,object

特殊型別:resource,NULL

  變數儲存結構

變數的值儲存到一下所示的zval結構體中.其結構如下:

typedef struct _zval_struct zval;

struct _zval_struct {

zvalue_value value; // 儲存變數的值

zend_uint refcount__gc; // 表示引用計數

zend_uchar type; // 變數具體的型別

zend_uchar is_ref_gc; // 表示是否為引用

};

變數的值儲存在另外一個結構體zvalue_value中

  變數型別

zval結構體的type欄位就是實現弱型別最關鍵的欄位了,type的值可以為:IS_NULL, IS_BOOL, IS_LONG, IS_DOUBLE, IS_STRING, IS_ARRAY, IS_OBJECT, IS_RESOURCE之一.從字面上就很好理解,他們只是型別的唯一標示,根據型別的不同將不同的值儲存到value欄位

變數值的儲存

前面說到變數的值儲存在zvalue_value結構體中,結構體定義如下:

typedef union _zvalue_value {

long lval;

double dval;

struct {

char *val;

int len;

} str;

HashTable *ht;

zend_object_value obj;

} _zvalue_value;

  日期相關

  計算兩個日期之間的天數

<?php

/**

* 求兩個日期之間相差的天數(針對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);

熱門標籤