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 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 PHP
php自动注册登录验证机制实现代码
Dec 20 PHP
destoon实现首页显示供应、企业、资讯条数的方法
Jul 15 PHP
php多任务程序实例解析
Jul 19 PHP
php使用CURL伪造IP和来源实例详解
Jan 15 PHP
php实现多城市切换特效
Aug 09 PHP
php中删除、清空session的方式总结
Oct 09 PHP
非常实用的php验证码类
May 15 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 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
php4的session功能评述(二)
2006/10/09 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
jquery等待效果示例
2014/05/01 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
使用python实现rsa算法代码
2016/02/17 Python
python rsa 加密解密
2017/03/20 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
私有程序集与共享程序集有什么区别
2013/04/05 面试题
财务会计毕业生自荐信
2013/11/02 职场文书
大学生职业生涯规划范文
2013/12/31 职场文书
校本教研工作制度
2014/01/22 职场文书
六年级数学教学反思
2014/02/03 职场文书
精神文明单位申报材料
2014/05/02 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
后进生评语大全
2015/01/04 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS