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 相关文章推荐
多重?l件?合查?(二)
Oct 09 PHP
php explode函数实例代码
Feb 27 PHP
md5 16位二进制与32位字符串相互转换示例
Dec 30 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 PHP
php 使用 __call实现重载功能示例
Nov 18 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/03/02 日漫
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
Yii框架安装简明教程
2020/05/15 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python多线程下载文件的方法
2015/07/10 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
同程旅游英文网站:LY.com
2018/11/13 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
自我评价怎么写正确呢?
2013/12/02 职场文书
校园活动策划书范文
2014/01/10 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
会计专业自荐信范文
2019/05/22 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫