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


Posted in PHP onAugust 10, 2015

变量相关
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";
PHP 相关文章推荐
十天学会php之第八天
Oct 09 PHP
教你如何把一篇文章按要求分段
Oct 09 PHP
escape unescape的php下的实现方法
Apr 27 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
Jul 07 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
laravel5实现微信第三方登录功能
Dec 06 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 PHP
6个超实用的PHP代码片段
Aug 10 #PHP
解读PHP中的垃圾回收机制
Aug 10 #PHP
php实现多城市切换特效
Aug 09 #PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 #PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 #PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 #PHP
Smarty使用自定义资源的方法
Aug 08 #PHP
You might like
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
社区(php&amp;&amp;mysql)二
2006/10/09 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
不用游标的SQL语句有哪些
2012/09/07 面试题
啤酒销售实习自我鉴定
2013/09/24 职场文书
电气专业应届生求职信
2013/11/01 职场文书
元宵节主持词
2014/03/25 职场文书
设计顾问服务计划书
2014/05/04 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
圣诞晚会主持词
2015/07/01 职场文书
小学运动会报道稿
2015/07/22 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android