本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com

面试是每一个PHP初学者到PHP程序员必不可少的一步,冷月将为大家对PHP基础知识;JS、JQuery、AJAX;Linux;MySQL;程序设计题;PHP框架;算法、逻辑思维;高并发解决方案等做一个全方位的解析。

回顾真题

PHP中字符串可以使用哪三种定义方式以及各自的区别是什么?

答案:

  1. 单引号
  2. 双引号
  3. heredoc()和newdoc()

先来看看单引号的使用:

<?php
$str1 = 'abc'; // 用单引号定义字符串str
$str2 = 'def';
$str3 = $str1.$str2;//两个字符串可以用.来拼接
?>

定义字符串的方式很简单,但是要注意几个常考点:

  1. 在单引号中,不能解析变量;
  2. 在单引号中,不能解析转义字符,只能解析单引号和反斜线本身;
  3. 在变量和变量,变量和字符串,字符串和字符串之间可以用 . 来连接。

再来看看双引号的使用:

<?php
$str1 = "abc"; //用双引号定义字符串str $a = 18;
$str2 = "小明今年{$a}岁 \n"; //双引号中可以解析变量,和转义字符
?>

我们要注意以下几个点:

  1. 双引号可以解析变量,变量可以使用特殊字符和{}包含;
  2. 双引号可以解析所有转义字符;
  3. 双引号也可以在变量和变量,变量和字符串,字符串和字符串之间可以用 . 来连接。

在来看看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的七种情况

  1. 0
  2. 0.0
  3. ''
  4. '0'
  5. false
  6. array()
  7. NULL

而NULL又有三种情况

  1. 直接将变量赋值为NULL
  2. 未定义的变量
  3. 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基础知识-常量和数据类型的更多相关文章

  1. Redis学习笔记之入门基础知识——五种数据类型

    1) 字符串 SET设置值,GET获取值,DEL删除值 INCR key-name将键存储的值加上1       DECR key-name将键存储的值减去1 INCRBY key-name amou ...

  2. Java 面试知识点解析(一)——基础知识篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  3. 【Java面试】1、基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充. 源码分享:https: ...

  4. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  5. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  6. Spring笔记01(基础知识)

    1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...

  7. [terry笔记]data guard基础知识

    如下介绍了data guard的基础知识,整理自网络: Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时,延时 ...

  8. Java 8实战之读书笔记二:基础知识

    好记性不如烂笔头,整理一些个人觉得比较重要的东西. 一.基础知识 第1章 为什么要关心Java 8 Java 8提供了一个新的API(称为"流", Stream),它支持许多处理数 ...

  9. MySQL必知必会笔记——查询的基础知识

    查询基础知识 第七章 数据过滤 组合where子句 MySQL允许给出多个WHERE子句.这些子 句可以两种方式使用:以AND子句的方式或OR子句的方式使用. AND操作符 可使用AND操作符给WHE ...

随机推荐

  1. MongoDB Community 的安装和卸载

    MongoDB在他们的仓库中提供官方支持的包,该仓库包括以下软件包 mongodb-org:自动安装下面的四个组件安装包 a.mongodb-org-server:mongod的守护进程和相关的配置以 ...

  2. Governing sand 贪心

    题目链接:https://ac.nowcoder.com/acm/contest/887/C 题目描述 The Wow village is often hit by wind and sand,th ...

  3. Unity事件系统EventSystem简析

    相关组件和类 EventSystem 1.负责InputModule的切换(因为现在游戏大部分都只有一个StanaloneInputModule,所以切换这部分可以先不考虑). 2.负责InputMo ...

  4. JMeter——分布式压测

    一.Jmeter4.0分布式压测准备工作 压测注意事项            the firewalls on the systems are turned off or correct ports ...

  5. 前端开发利器 Web Replay

    前端开发人员收到测试发来的 bug 后,通常比较头疼复现的问题. 即使测试人员录了视频,照着一步步操作也不一定能复现,例如bug是与当时的数据相关的. 为了解决这个问题,Firefox 推出了一个重磅 ...

  6. 图像处理基础知识:EMVA1288标准之“非均匀性”的理解

    EMVA1288标准之“非均匀性”的理解 目录 1. 什么是图像的非均匀性?有标准吗? 2. EMVA1288的非均匀性内容. 3. 总结与理解 正文 1. 什么是图像的非均匀性?有标准吗?简单来说, ...

  7. NOI2.5 8465:马走日

    描述 马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. 输入 第一行为整数T ...

  8. allegro设置内存分配器的一个坑

    看过<游戏引擎架构>后我开始对内存的分配问题关注,一直想用内存分配器来管理游戏的内存.前两天发现了有许多第三方内存分配器可以用.最后挑中了nedmalloc,这个库也是ogre所使用的,测 ...

  9. 基于Flask框架搭建视频网站的学习日志(一)

    ------------恢复内容开始------------ 基于Flask框架搭建视频网站的学习日志(一)2020/02/01 一.Flask环境搭建 创建虚拟环境 初次搭建虚拟环境 搭建完虚拟环境 ...

  10. pycharm安装PIL失败

    搜索安装PIL后无法成功安装,在尝试各种版本后依旧无法解决 问题解决 安装Pillow-PIL,既可以成功执行代码 因为pil没有64位的版本,所以需要下载安装第三方支持64位系统的版本才可以使用.