服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - PHP的关于变量和日期处理的一些面试题目整理

PHP的关于变量和日期处理的一些面试题目整理

2020-11-16 15:56zinss26914 PHP教程

这篇文章主要介绍了PHP的关于变量和日期处理的一些面试题目整理,也是PHP入门学习中的基础知识,需要的朋友可以参考下

变量相关
PHP变量的内部实现

编程语言的系统类型分为强类型和弱类型两种:

  1.     强类型语言是一旦某个变量被申明为某个类型的变量,在程序运行过程中,就不能将该变量的类型以外的值赋予给它,c/c++/java等语言就属于这类

  2.     php及ruby,javascript等脚本语言就属于弱类型语言:一个变量可以表示任意的数据类型


php变量类型及存储结构
php在声明或使用变量的时候,并不需要显式指明其数据类型

php是弱类型语言,这不并表示php没有类型,在php中,存在8种变量类型,可以分为三类:

  1.     标量类型:boolean,integer,float,string

  2.     复合类型:array,object

  3.     特殊类型:resource,NULL


变量存储结构
变量的值存储到一下所示的zval结构体中.其结构如下:

?
1
2
3
4
5
6
7
8
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结构体中,结构体定义如下:

?
1
2
3
4
5
6
7
8
9
10
typedef union _zvalue_value {
  long lval;
  double dval;
  struct {
    char *val;
    int len;
  } str;
  HashTable *ht;
  zend_object_value obj;
} _zvalue_value;


日期相关

计算两个日期之间的天数
  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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);
 echo $diff."\n";

 

延伸 · 阅读

精彩推荐