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 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
用缓存实现静态页面的测试
Dec 06 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
学习php设计模式 php实现状态模式
Dec 07 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
php用xpath解析html的代码实例讲解
Feb 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
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
Javascript 实用小技巧
2010/04/07 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
python 中文乱码问题深入分析
2011/03/13 Python
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python下载图片实现方法(超简单)
2017/07/21 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
python中time库的实例使用方法
2019/10/31 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
tensorflow常用函数API介绍
2020/04/19 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
公司聘任书模板
2014/03/29 职场文书
食品工程专业求职信
2014/06/15 职场文书
在职证明书模板
2015/06/15 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
python 爬取华为应用市场评论
2021/05/29 Python
详解Python自动化之文件自动化处理
2021/06/21 Python
Java Spring读取和存储详细操作
2022/08/05 Java/Android
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers