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 相关文章推荐
php2html php生成静态页函数
Dec 08 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
javascript concat数组累加 示例
2009/09/03 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
原生js实现验证码功能
2017/03/16 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
js实现GIF图片的分解和合成
2019/10/24 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
跟老齐学Python之Import 模块
2014/10/13 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python获取Linux发行版名称
2019/08/30 Python
Python 寻找局部最高点的实现
2019/12/05 Python
Python读取csv文件实例解析
2019/12/30 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
python装饰器代码深入讲解
2021/03/01 Python
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
特此通知格式
2015/04/27 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS