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&amp;&amp;mysql)二
Oct 09 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
php 生成文字png图片的代码
Apr 17 PHP
php 中的4种标记风格介绍
May 10 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
浅析php适配器模式(Adapter)
Nov 25 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP的反射机制实例详解
Mar 29 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
一个用php3编写的简单计数器
2006/10/09 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
vue3.0 上手体验
2020/09/21 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
python基础教程之类class定义使用方法
2014/02/20 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
Python的Lambda函数用法详解
2019/09/03 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
django下创建多个app并设置urls方法
2020/08/02 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
weblogic面试题
2016/03/07 面试题
机电专业个人自荐信格式模板
2013/09/23 职场文书
医学专业毕业生推荐信
2013/11/14 职场文书
求职信怎么写
2014/05/23 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
活着观后感
2015/06/03 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
python实现的web监控系统
2021/04/27 Python
MySQL一些常用高级SQL语句
2021/07/03 MySQL