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 4.2书写安全的脚本
Oct 09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
php strcmp使用说明
Apr 22 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
CI(CodeIgniter)模型用法实例分析
Jan 20 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 PHP
thinkPHP分页功能实例详解
May 05 PHP
PHP后期静态绑定实例浅析
Dec 21 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 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配合jquery实现增删操作具体实例
2013/12/12 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
PHP实现视频文件上传完整实例
2014/08/28 PHP
详解php中的implements 使用
2017/06/13 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
Javascript JSQL,SQL无处不在,
2010/05/05 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
python绘制条形图方法代码详解
2017/12/19 Python
python的re正则表达式实例代码
2018/01/24 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
在django模板中实现超链接配置
2019/08/21 Python
Django--权限Permissions的例子
2019/08/28 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
python生成并处理uuid的实现方式
2020/03/03 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
大学迎新晚会主持词
2014/03/24 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书