php面试笔记(2)-php基础知识-常量和数据类型
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com
面试是每一个PHP初学者到PHP程序员必不可少的一步,冷月将为大家对PHP基础知识;JS、JQuery、AJAX;Linux;MySQL;程序设计题;PHP框架;算法、逻辑思维;高并发解决方案等做一个全方位的解析。
回顾真题
PHP中字符串可以使用哪三种定义方式以及各自的区别是什么?
答案:
- 单引号
- 双引号
- heredoc()和newdoc()
先来看看单引号的使用:
<?php
$str1 = 'abc'; // 用单引号定义字符串str
$str2 = 'def';
$str3 = $str1.$str2;//两个字符串可以用.来拼接
?>
定义字符串的方式很简单,但是要注意几个常考点:
- 在单引号中,不能解析变量;
- 在单引号中,不能解析转义字符,只能解析单引号和反斜线本身;
- 在变量和变量,变量和字符串,字符串和字符串之间可以用 . 来连接。
再来看看双引号的使用:
<?php
$str1 = "abc"; //用双引号定义字符串str
$a = 18;
$str2 = "小明今年{$a}岁 \n"; //双引号中可以解析变量,和转义字符
?>
我们要注意以下几个点:
- 双引号可以解析变量,变量可以使用特殊字符和{}包含;
- 双引号可以解析所有转义字符;
- 双引号也可以在变量和变量,变量和字符串,字符串和字符串之间可以用 . 来连接。
在来看看heredoc()和newdoc()的使用
heredoc() 相当于双引号的作用,newdoc()类似于单引号的作用,当在处理大文本或html代码时可以使用,使用格式如下:
<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
?>
// 结束需要独立一行且前后不能空格
考点分析
主要考察考生对于PHP常量和常用数据类型的理解,只要将本篇文章的内容加以理解,相信在面对此类问题时,可以得心应手。
常量
在PHP中可以使用const关键字和define()函数来定义常量。
<?php
const ONE_DEMO = "我是常量1"; //常量不用加$符,一般用大写来表示
define("TWO_DEMO","我是常量2"); //第一个参数为常量名,第二个参数是常量值
?>
常量值被定义后,在PHP脚本的其他任何地方都不能被修改,不能被删除。
预定义常量
在PHP中预定义了许多可能会用到的常量,这一点大家也要有一个了解
<?php
echo __FILE__; //获取当前文件绝对路径 D:\xxxx\xxxx\xxxx\index.php
echo __LINE__; //显示当前代码在多少行
echo __DIR__; //获取当前文件所在的目录 D:\xxxx\xxxx\xxxx
function test()
{
echo __FUNCTION__; //获取当前方法的名称 test
}
class test {
function abc() {
echo __CLASS__; //获取当前类的名称 test
}
}
(new test)->abc();
echo __NAMESPACE__; //输出当前的命名空间
?>
数据类型
在PHP中数据类型分别为以下几个:
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
其中,需要注意的是浮点类型不能运用到比较运算中,例如:
<?php
$a = 0.1;
$b = 0.7;
if ($a + $b == 0.8)
{
echo "OK";
}else{
echo "ERROR"; //输出ERROR
}
?>
因为在计算机中是用补码进行运算的,而浮点类型在运算中,可以会产生精度的损失,所以计算过程有可能是0.1+ 0.7 = 0.79999 ,损失了0.00001。所以会比较运算符输出false,程序输出ERROR。
我们还需要了解布尔类型中FALSE的七种情况:
- 0
- 0.0
- ''
- '0'
- false
- array()
- NULL
而NULL又有三种情况
- 直接将变量赋值为NULL
- 未定义的变量
- unset()销毁的变量
最后,我们来了解一下超全局数组
$GLOBALS:
$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
$_GET
$_GET 广泛应用于收集表单数据,在HTML form标签的指定属性:"method="get"。
$_POST
$_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
$_REQUEST
$_REQUEST 用于收集HTML表单提交的数据。包含get和post
$_COOKIE
获取cookie
$_SESSION
获取session
$_SERVER (以下为几个常用的键)
$_SERVER['SERVER_ADDR']
当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME']
当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。(如: www.runoob.com)
$_SERVER['REQUEST_TIME']
请求开始时的时间戳。
$_SERVER['HTTP_REFERER']
引导用户代理到当前页的前一页的地址(如果存在)。也就是说发起请求的地址。
$_SERVER['REMOTE_ADDR']
浏览当前页面的用户的 IP 地址。
一网打尽
最后,让我们来看几道真题,一网打尽所学考点
1.用PHP写出获取客户端IP和服务器IP 的代码
<?php
echo $_SERVER['REMOTE_ADDR'];//输出客户端IP地址
echo $_SERVER['SERVER_ADDR'];//输出服务端IP地址
?>
2.__FILE__表示什么意思
获取当前PHP脚本文件所在绝对路径,例如 D:\xxxx\xxxx\xxxx\index.php
喜欢冷月的话不妨给本文点一个赞,获取更多面试笔记、编程技巧或开源代码,请关注冷月的公众号:学长冷月

php面试笔记(2)-php基础知识-常量和数据类型的更多相关文章
- Redis学习笔记之入门基础知识——五种数据类型
1) 字符串 SET设置值,GET获取值,DEL删除值 INCR key-name将键存储的值加上1 DECR key-name将键存储的值减去1 INCRBY key-name amou ...
- Java 面试知识点解析(一)——基础知识篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- 【Java面试】1、基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充. 源码分享:https: ...
- ios开发学习笔记001-C语言基础知识
先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...
- iOS 阶段学习第11天笔记(OC基础知识)
iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import 用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...
- Spring笔记01(基础知识)
1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...
- [terry笔记]data guard基础知识
如下介绍了data guard的基础知识,整理自网络: Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时,延时 ...
- Java 8实战之读书笔记二:基础知识
好记性不如烂笔头,整理一些个人觉得比较重要的东西. 一.基础知识 第1章 为什么要关心Java 8 Java 8提供了一个新的API(称为"流", Stream),它支持许多处理数 ...
- MySQL必知必会笔记——查询的基础知识
查询基础知识 第七章 数据过滤 组合where子句 MySQL允许给出多个WHERE子句.这些子 句可以两种方式使用:以AND子句的方式或OR子句的方式使用. AND操作符 可使用AND操作符给WHE ...
随机推荐
- Python爬虫入门教程 33-100 电影评论数据抓取 scrapy
1. 海王评论数据爬取前分析 海王上映了,然后口碑炸了,对咱来说,多了一个可爬可分析的电影,美哉~ 摘录一个评论 零点场刚看完,温导的电影一直很不错,无论是速7,电锯惊魂还是招魂都很棒.打斗和音效方面 ...
- [工具] 利用setuptools打包python程序
一.准备工程文件 1.创建工程leeoo 2.在工程根目录下创建setup.py文件 3.在工程根目录下创建同名package 二.编辑setup.py 1.编辑setup.py文件 from set ...
- python 枚举类型
在python中枚举是一种类(Enum,IntEnum),存放在enum模块中.枚举类型可以给一组标签赋予一组特定的值. 枚举的特点: 枚举类中不能存在相同的标签名 枚举是可迭代的 不同的枚举标签可以 ...
- 阿望教你用vue写扫雷(超详细哦)
前言 话说阿望还在大学时,某一天寝室突然停网了,于是和室友两人不约而同地打开了扫雷,比相同难度下谁更快找出全部的雷,玩得不亦乐乎,就这样,扫雷伴我们度过了断网的一周,是整整一周啊,不用上课的那种,可想 ...
- Python Global和Nonlocal的用法
nonlocal 和 global 也很容易混淆.简单记录下自己的理解. 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值. global 语句是一个声明,它适用于整个当 ...
- spring boot 集成apollo 快速指南
目前市面上流行的三大配置中心框架:Spring CLoud Config .Alibaba Nacos 以及携程apollo, 我们相应架构组号召,就使用Apollo吧. Work Flow 简单解释 ...
- ORM基础3 在python脚本里调用Django环境
1.查询 1.# all获取所有的object,结果QuerySet,列表 print('all'.center(80, '=')) ret = models.Person.objects.all() ...
- 关于checkbox取值的问题
今天,在做一个小界面的时候,要用到checkbox来判断用户是否选择记住密码. 本来我想这个不是挺简单吗,直接用jquery获取checkbox的checked属性值好了,如下: var rememb ...
- 这个时候 快下班了 我来翻译一段: Pro ASP.NET MVC 3 Framework
Binding to a Derived Type绑定派生类型Although we have focused on interfaces (since that is most relevant i ...
- 《Netlogo多主体建模入门》笔记 2
从自带的模型库开始 财富分配模型 黄色代表稻谷,有的人消化快,有的慢,稻谷的积累代表财富的积累,不涉及交易行为. 点击setup后 ,点击 go 红线--穷人: 绿线-- 中产 : 蓝 ...