PHP的关于变量和日期处理的一些面试题目整理
变量相关
PHP变量的内部实现
编程语言的系统类型分为强类型和弱类型两种:
- 强类型语言是一旦某个变量被申明为某个类型的变量,在程序运行过程中,就不能将该变量的类型以外的值赋予给它,c/c++/java等语言就属于这类
- php及ruby,javascript等脚本语言就属于弱类型语言:一个变量可以表示任意的数据类型
php变量类型及存储结构
php在声明或使用变量的时候,并不需要显式指明其数据类型
php是弱类型语言,这不并表示php没有类型,在php中,存在8种变量类型,可以分为三类:
- 标量类型:boolean,integer,float,string
- 复合类型:array,object
- 特殊类型: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经典面试题之设计模式(经常遇到)
设计模式在面试过程中经常会提到,有时候还会让我们举例说明各种设计模式的应用场景. 使用设计模式可以减轻我们的工作量,优化我们的代码. 设计模式非常的多,这里介绍单例模式,工厂模式,组合模式,策略模式4种模式 如果有代码有什么问题或者有更好的方式请告知,谢谢!!!!! /** * 单例模式 * @author YangYang <1812271619@qq.com> * 可以想成在一次http请求中只产生该类的一个对象(即只new classname一次) * 经典的例子是数据库连接(redis
-
33道php常见面试题及答案
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中:而链接到当前页面的URL记录在预定义变量(2)中. 复制代码 代码如下: 答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 2.执行程序段将输出(3). 复制代码 代码如下: 答:0 3.在HTTP 1.0中,状态码 401 的含义是(4):如果返回"找不到文件"的提示,则可用 header 函数,其语句为(5).
-
PHP的文件操作与算法实现的面试题示例
操作文件 1.使用5种以上的方式获取一个文件的扩展名 要求: dir/upload.image.jpg, 找出.jpg或者jpg <?php /** * 五种方式获取指定路径的文件扩展名 */ $str = "dir/upload.image.jpg"; function one ($str) { $arr = explode('.', $str); $count = count($arr); return $arr[$count - 1]; } function two ($s
-
PHP经典面试题集锦
本文较为详细的分析了PHP经典面试题.分享给大家供大家参考.具体如下: 做了一下网络上的php题目,不知不觉做到现在.....把答案贴出来,供参考之用. 1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) $a = date("Y-m-d H:i:s", strtotime("-1 day")); print_r($a); 2.echo(),print(),print_r()的区别(3分) echo 和print不是一个函数,是一个语言
-
PHP面试题之文件目录操作
这道题其实并不难,考点主要在函数substr() strrchr() array_pop() strrpos() strpos() strrev() explode() pathinfo(). 废话不多说了,直接给大家贴代码了. 获取文件后缀,遍历目录层次 /** * 5种方式获取文件后缀名 * 这道题其实就是考函数substr() strrchr() array_pop() strrpos() strpos() strrev() explode() pathinfo() * @param
-
PHP面试常用算法(推荐)
一.冒泡排序 基本思想: 对需要排序的数组从后往前(逆序)进行多遍的扫描,当发现相邻的两个数值的次序与排序要求的规则不一致时,就将这两个数值进行交换.这样比较小(大)的数值就将逐渐从后面向前面移动. //冒泡排序 <?php function mysort($arr) { for($i = 0; $i < count($arr); $i++) { $isSort = false; for ($j=0; $j< count($arr) - $i - 1; $j++) { if($arr[$
-
8个PHP数组面试题
网上找的PHP数组题,准备自己做一遍并且记录下来. 1.写函数创建长度为10的数组,数组中的元素为递增的奇数,首项为1. 复制代码 代码如下: <?php function arrsort($first,$length){ $arr = array(); for($i=$first;$i<=$length;$i++){ $arr[] = $i*2-1; } return $arr; } $arr1 = arrsort(1,10);
-
PHP的关于变量和日期处理的一些面试题目整理
变量相关 PHP变量的内部实现 编程语言的系统类型分为强类型和弱类型两种: 强类型语言是一旦某个变量被申明为某个类型的变量,在程序运行过程中,就不能将该变量的类型以外的值赋予给它,c/c++/java等语言就属于这类 php及ruby,javascript等脚本语言就属于弱类型语言:一个变量可以表示任意的数据类型 php变量类型及存储结构 php在声明或使用变量的时候,并不需要显式指明其数据类型 php是弱类型语言,这不并表示php没有类型,在php中,存在8种变量类型,可以分为三类: 标量类型
-
在Python中处理日期和时间的基本知识点整理汇总
Python程序可以处理多种方式的日期和时间.日期格式之间的转换是一种常见计算机的杂活. Python的时间和日历模块,能帮助处理日期和时间. Tick是什么? 时间间隔为浮点数以秒为单位的数字.在特定的时间瞬间自上午12时00分,1970年1月1日(纪元)表示,单位为秒. Python中可用的流行时间模块,它提供功能转换.该功能time.time()返回当前系统时间,因为上午12点,1970年1月1日(时代). 例子: #!/usr/bin/python import time; # This
-
php变量与JS变量实现不通过跳转直接交互的方法
本文实例讲述了php变量与JS变量实现不通过跳转直接交互的方法.分享给大家供大家参考,具体如下: 大家都知道如果JS变量要获取后台传来的php变量可以这么写: <?php $aaa = '111';?> var aaa = <?php echo $aaa;?>; 那么我们如何将js变量的值直接付给php变量呢 第一种方法也是最常见的方法: 无刷新:使用ajax传参 有刷新:直接跟表单一起提交或者直接跟在跳转链接的后面. 现在我来说一下第二种传值方式: 示例为对js变量进行日期处理:
-
详细分析ASP.NET Razor之C# 变量
变量 变量是用来存储数据的. 一个变量的名称必须以字母字符开头,并且不能包含空格或者保留字符. 一个变量可以是一个指定的类型,表示它所存储的数据类型.string 变量存储字符串值("Welcome to RUNOOB.COM"),integer 变量存储数字值(103),date 变量存储日期值,等等. 变量使用 var 关键字声明,或通过使用类型(如果您想声明类型)声明,但是 ASP.NET 通常能自动确定数据类型. // Using the var keyword: var gr
-
关于日期正则表达式的思路详解
1 概述 首先需要说明的一点,无论是Winform,还是Webform,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和校验还是用日历控件来实现比较好. 前几天在CSDN多个版块看到需要日期正则的帖子,所以整理了这篇文章,和大家一起讨论交流,如有遗漏或错误的地方,还请大家指正. 日期正则一般是对格式有要求,且数据不是直接由用户输入时使用.因应用场景的不同,写出的正则也不同,复杂程度也自然不同.正则的书写需要根据具体情况具体分析,一个基本原则就是:只写合适的,不写复杂
-
正则应用之 日期正则表达式
1概述 首先需要说明的一点,无论是Winform,还是Webform,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和校验还是用日历控件来实现比较好. 前几天在CSDN多个版块看到需要日期正则的帖子,所以整理了这篇文章,和大家一起讨论交流,如有遗漏或错误的地方,还请大家指正. 日期正则一般是对格式有要求,且数据不是直接由用户输入时使用.因应用场景的不同,写出的正则也不同,复杂程度也自然不同.正则的书写需要根据具体情况具体分析,一个基本原则就是:只写合适的,不写复杂的. 对于日期提
-
vue中如何实现变量和字符串拼接
整理文档,搜刮出一个vue中如何实现变量和字符串拼接的代码,稍微整理精简一下做下分享. 在data中定义变量: data() { return { a: 'A' } } 如何通过按钮点击实现字符串和变量a的拼接呢? <button @click='showMsg'></button> //vue methods: { showMsg() { alert(`获取了${a}`); } } 注意alert()里不是单引号,而是两个 ` 号(esc下面的按键). 点击按钮出现 以上就是本文
-
python时间日期函数与利用pandas进行时间序列处理详解
python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差. 下面我们先简单的了解下python日期和时间数据类型及工具 给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象 from datetime import datetime from datetime impo
-
PYTHON基础-时间日期处理小结
步骤: 1. 掌握几种对象及其关系 2. 了解每类对象的基本操作方法 3. 通过转化关系转化 涉及对象 1. datetime >>> import datetime >>> now = datetime.datetime.now() >>> now datetime.datetime(2018, 1, 12, 23, 9, 12, 946118) >>> type(now) <type 'datetime.datetime'&
-
Vbs脚本经典教材(最全的资料还是MSDN)
-为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来--.这些事情重复.琐碎,使人容易疲劳. 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,
随机推荐
- mysql版本5.5.x升级到5.6.x步骤分享
- extjs grid设置某列背景颜色和字体颜色的方法
- php三维数组去重(示例代码)
- ThinkPHP3.1数据CURD操作快速入门
- Docker学习笔记之Docker部署Java web系统
- js数字舍入误差以及解决方法(必看篇)
- jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
- jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
- JavaScript检查表单是否为空的函数
- php使用数组填充下拉列表框的方法
- Android滑动冲突的完美解决方案
- Android Studio应用开发集成百度语音合成使用方法实例讲解
- Android 中通过实现线程更新Progressdialog (对话进度条)
- Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法
- 浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
- Java Swing组件文件选择器JFileChooser简单用法示例
- PHP给源代码加密的几种方法汇总(推荐)
- Java编程一个随机数产生模块代码分享
- Linux中git用https连接时不用每次输入密码的方法
- springboot接收别人上传的本地视频实例代码