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
文章推荐系统(三)
Oct 09 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
迅速确定php多维数组的深度的方法
Jan 07 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
PHP与Web页面交互操作实例分析
Jun 02 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 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
JAVA程序员面试题
2012/10/03 面试题
掌上明珠Java程序员面试总结
2016/02/23 面试题
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
Python数据分析之pandas读取数据
2021/06/02 Python
详解JavaScript中Arguments对象用途
2021/08/30 Javascript