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 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
MySQL授权问题总结
May 06 PHP
PHP GD 图像处理组件的常用函数总结
Apr 28 PHP
分享一则PHP定义函数代码
Feb 26 PHP
十大使用PHP框架的理由
Sep 26 PHP
PHP中Array相关函数简介
Jul 03 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
如何使用PHP给图片加水印
Oct 12 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 PHP
PHP数组array类常见操作示例
May 15 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面向对象——访问修饰符介绍
2012/11/08 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python 运算符 供重载参考
2009/06/11 Python
python实现kNN算法
2017/12/20 Python
python打造爬虫代理池过程解析
2019/08/15 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
物理研修随笔感言
2014/02/14 职场文书
学生实习证明范文
2014/09/28 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python