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

 更新时间:2015年08月10日 12:14:47   作者:zinss26914  
这篇文章主要介绍了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结构体中.其结构如下:

  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); 
  echo $diff."\n"; 

相关文章

  • 搭建PhpStorm+PhpStudy开发环境的超详细教程

    搭建PhpStorm+PhpStudy开发环境的超详细教程

    这篇文章主要介绍了搭建PhpStorm+PhpStudy开发环境的超详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • thinkPHP框架实现的简单计算器示例

    thinkPHP框架实现的简单计算器示例

    这篇文章主要介绍了thinkPHP框架实现的简单计算器,结合实例形式分析了基于thinkPHP框架的用户登陆、数值计算、数据库读写、历史记录保存等功能相关实现技巧与操作注意事项,需要的朋友可以参考下
    2018-12-12
  • 浅谈PHP中如何实现Hook机制

    浅谈PHP中如何实现Hook机制

    本篇文章主要介绍了浅谈PHP中如何实现Hook机制,详细的介绍了Hook机制的原理和实现过程,具有一定的参考价值,有兴趣的可以了解一下
    2017-11-11
  • ThinkPHP防止重复提交表单的方法实例分析

    ThinkPHP防止重复提交表单的方法实例分析

    这篇文章主要介绍了ThinkPHP防止重复提交表单的方法,结合实例形式分析了thinkPHP防止重复提交表单的各种常见操作技巧与相关注意事项,需要的朋友可以参考下
    2018-05-05
  • PHP Opcache安装和配置方法介绍

    PHP Opcache安装和配置方法介绍

    这篇文章主要介绍了PHP Opcache安装和配置方法介绍,Opcache的安装需要在编译时加上enable-opcache即可,本文着重讲解配置方法,需要的朋友可以参考下
    2015-05-05
  • IIS6.0 开启Gzip方法及PHP Gzip函数分享

    IIS6.0 开启Gzip方法及PHP Gzip函数分享

    因为在做一个项目,项目里面服务器主要提供数据,但是数据多了文件就大了,比较浪费流量和时间,我们便用Gzip来处理。我在本机上是apache,服务器上是IIS6.0,用的是php,那么我就在这里分享一下。
    2014-06-06
  • php批量把数组中的日期时间转为时间戳的实现

    php批量把数组中的日期时间转为时间戳的实现

    本文介绍了php批量把数组中的日期时间转为时间戳的实现,主要使用strtotime()函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法)

    PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法)

    下面小编就为大家分享一篇PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • PHP中使用GD库绘制折线图 折线统计图的绘制方法

    PHP中使用GD库绘制折线图 折线统计图的绘制方法

    本文通过代码给大家介绍php中使用GD库绘制折线图,涉及到php中GD库的一些简单使用,本文介绍的非常详细,感兴趣的朋友一起学习吧
    2015-11-11
  • PHP将字符分解为多个字符串的方法

    PHP将字符分解为多个字符串的方法

    这篇文章主要介绍了PHP将字符分解为多个字符串的方法,通过split进行正则匹配实现分割字符串的功能,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11

最新评论