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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
Yii操作数据库的3种方法
Mar 11 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
使用PHPMailer实现邮件发送代码分享
Oct 23 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
php获取图片信息的方法详解
Dec 10 PHP
php封装的smarty类完整实例
Oct 19 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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
PHP实现定时执行任务的方法
2014/10/05 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
php数组和链表的区别总结
2019/09/20 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
javascript中this的四种用法
2015/05/11 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
数据库专业英语
2012/11/30 面试题
巧克力蛋糕店创业计划书
2014/01/14 职场文书
六查六看剖析材料
2014/02/15 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
2015年实习单位评语
2015/03/25 职场文书