• 技术文章 >后端开发 >php教程

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

    2016-05-30 08:47:05原创468
    变量相关
    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"; 
    
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 变量 日期处理
    上一篇:PHP的Socket网络编程入门指引_PHP 下一篇:以实例全面讲解PHP中多进程编程的相关函数的使用_PHP
    PHP编程就业班

    相关文章推荐

    • php Swoole实现毫秒定时计划任务(详解)• 【DTM】PHP协程客户端v0.1 beta版本发布啦!• 第五行出错,哪里符号有关问题 • PHP Date()函数详细参数• 帮忙解答 谢谢

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网