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
php下使用无限生命期Session的方法
Mar 16 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
php的一个简单加密解密代码
Jan 14 PHP
php中spl_autoload详解
Oct 17 PHP
四个PHP非常实用的功能
Sep 29 PHP
php mysqli查询语句返回值类型实例分析
Jun 29 PHP
PHP身份证校验码计算方法
Aug 10 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
php实现小程序支付完整版
Oct 09 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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实现单链表的实例代码
2013/03/22 PHP
php实现多张图片上传加水印技巧
2013/04/18 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
python抓取文件夹的所有文件
2018/02/27 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
翻译专业应届生求职信
2013/11/23 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
2014年三万活动总结
2014/04/26 职场文书
工程催款通知书
2015/04/17 职场文书
遗嘱范文
2015/08/07 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
7个关于Python的经典基础案例
2021/11/07 Python
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL