一、前提是我在Linux服务器上已经安装了PHP
这句代码非常神奇,一句话能变成一个网页。是我们PHP入门的第一段代码。
刚刚我们看到这个代码已然生成了一个网页。不明白其中的意思,现在我一点一点跟大家解释。
遇到上面的【问号、尖括号】说明PHP代码写完了。再之后的部份,跟我PHP没有关系啦。现在大家看会了?请问:phpinfo() 后面还接了一个分号(;),并且在phpinfo()的上一行和后一行,还有两个回车符。请问这是什么意思呢?
现在我告诉你答案:
phpinfo是一个函数(功能),这个函数(功能)会显示一个当前电脑(服务器)的详细的PHP信息。在后面会专门为大家讲解phpinfo()这个函数。这个函数必须要大家记住!
电脑是一个很笨的东西。他需要我们人为的告诉他,代码写完了。我们用分号(;)来告诉他代码写完了。因此,只要我们写完一段代码,就需要在后面加分号(;)。注意事项:
php的代码部份全部要用半角的英文、很多人容易写成全角的英文和符号造成PHP代码报错。
PHP代码的最后一行可以加也可不加分号。由于很多学习者特别是初学者经常犯一个毛病:写完一行代码不加分号。因此,容易报错。我们通常在公司里面规定:一行代码写完,就必须要加分号。我们在写文件index.php这个文件命名的时候,只用英文半脚(a-zA-Z0-9_-)这些字符来命名文件。文件命名不要用中文,不要用特殊附号,不要中间加空格,严格区分大小。
二、读过初中你就会变量
大家在读初中的时候呀。老师经常会这么教大家。请问,李磊和韩梅梅同学,假如:那么x + y 等于多少呢?大家会义无反顾的回答。x + y 等于11。
x = 5
y = 6
接下来我们看下面的初中的数学知识,请问x + y 的结果是多少?
x = 5
y = 6
x = 8
这就是变量!变量的几个特点:
5.变量命名要有意义(别写xxx,aaa,ccc这种 变量名)
错误举列:
错误:变量以数字开始
错误:变量中有特殊字符,中文
错误:变量命名没有意义aaa容易数错,也没有含意
错误:变量严格区分大小写 $dog 和 $Dog是PHP学院的变量,尝试将$dog的值改为8.结果D写成了大写。
正确举例:
正确:变量不能以数字开始,但是数字可以夹在变量名中间和结尾
正确:变量不能有特殊符号,但是_(下划线不算特殊符号)
注:你会发现代码是从上向下执行的。
$ 叫作美元符,英文单词:dollar。PHP的变量必须以美元符开始。说明搞PHP有“钱”途。
三、echo 显示命令
echo 是在PHP里面最常用的一个输出、显示功能的命令。我们可以让他显示任何可见的字符。
四、php注释的学习
注释的功能很强大,所谓注释,汉语解释可以为:注解。更为准确一些。因为代码是英文的、并且代码很长,时间长了人会忘。所以我们会加上注释。
注释的功能有很多:
1.对重点进行标注
2.时间长了容易忘快速回忆,方便查找
3.让其他人看的时候快速看懂
4.还可以生成文档,代码写完相关的文档就写完了,提高工作效率
5.注释、空行、回车之后的代码看起来更优美
6.注释可用来排错。不确定代码中哪一块写错了,可以将一大段注释,确定错误区间
7.注释中间的部份的内容,电脑不会执行它
先给大家看看我们觉得优美的代码,整齐、规范、说明清楚、一看就懂。(不需要理解代码的含义):
再看看我们眼中觉得丑陋的代码,对齐丑陋不说,并且没有功能说明(不需要理解代码的含义):
我们了解了注释的好处,接下来我们来说PHP的注释,注释分别:
单行注释(只注释一行)单行注释
// 表示单行注释
# #号也表示单行注释,用的比较少
/*
多行注释 这里是注释区域代码
*/
单行注释举例:
注:通过上例我们知道,注释通常写代码上面。
多行注释举例:
五、php整型就是整数
我一直在讲,不要被名词的含义所吓唬住。到底什么是整型呀?所谓整型,就是大家数学中所学的整数。
整型——整数也,英文称之:integer。英文简写:int
整型分为:1.10进制
2.8进制 (了解,基本不用)
3.16进制(了解,基本不用)
布尔类型就是:真和假。在英文把真和假翻译过来就是:
true(真)
false(假)
因此,我们在PHP代码里面可以这样声明。
七、php数据类型之字符串
字符串就是所有我们可见和不可见的字符,就是我们日常当中说的话,就是我想说:“小明好帅”或者“凤姐,我爱你!”。字符串,就是我想表达的一切让人看到的字符。
例如可以看到的字符:我愿变成童话你,你爱的那个王子,有房有车有票子。
以上可以见到的文字,HTML标签、特殊字符和英文等等,我们都认为是字符串。
在PHP语言中声明字符串有三种方式:
1.用单引号声明
2.用双引号声明
3.用字界符声明(需要输入非常大段的字符串时使用)
1.单引号声明
用英文半脚的单引号,将字符串包起来
2.双引号声明字符串
在字符串两边加双引号。
4).写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC;
加上一段
距离的话
我想说:思想有多远,你就跟我滚多远
ABC;
echo $dingjie;
?>
8.我们将定界符声明字符串视为双引号一样的功能来看待。
实验举例
1.双引号解析变量,但是单引号不解析变量
通过上边的例子,我们发现。双引号中间的变量够执行显示,我们将$str这个字符串两边的双引号,改为单引号试试,再看一次执行结果:
发现$shouji 直接显示出来了,而不是双引号的显示结果。
通过上例,我们证明了:双引号执行变量,而单引号不执行变量。我们得到一个重要结论:
双引号需要解析变量,因此双引号的效率没有单引号高。我们如果为了更高的效率,我们通常使用单引号。
2. 在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。可以在后面接上特殊字符,例如空格等分开。
但是,我们在$str 声明的这个字符串中将$huaqiangu 后面接个空格再接aaaa,代码如下:
我们把代码再改改:
大家打开一次页面,执行了一次代码看看结果是不是变为了:
php中文网!aaaa
因此,证明了我们的第二项观点。
3. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
那,如果我不想在后面有空格有,有特殊符号,就想直接显示变量$huaqiangu呢?——我们的解决办法是用大括号把变量包起来。代码如下:
于是,大家会发现花千骨后面没有了特殊符号,也没有空格了,达到了我们想要的显示结果,演示效果如上:
4. 双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\
第4个字符串的注意事项比较难以观察,转义字符有一些,但最常用的有:
\n 回车
\t 缩进
我们来通过实验先来理解\n和\t是什么。
为什么看不出来\n和\t代表什么含义,也看不出来双引号解析了\n和\t呢?——因为,你没有点击鼠标右键查看源代码。我们来点击一下,再看看效果。
第一步:显示网页源代码
第二步:查看HTML源代码显示的结果:
大家来对比字符串变量:
$string = "每天来PHP中文网\n给梦想\t一个机会";
\n在PHP学院的后面,在源代码里显示的结果是跟按了回车键一样的效果。
\t在给梦想和一个机会中间。显示的结果是有几个空格的效果。\t相当于我们在电脑上按了一个tab键效果。
但是,我们同样执行一下上面的代码,但是$string双引号改为用单引号:
你会发现——单引号中间的\t和\n直接显示出来了,而没有变成按一次回车键和按一次tab键后的效果。
因此:双引号执行转义字符而单引号不执行转义字符。
5. 转义字符\(反斜线的使用)
如果我们声明一个变量$beizi,我们想要在$beizi声明的双引号中间加上一个双引号显示输出怎么办?
如果真如上述所写代码,代码会报错。报错结果如下:
因为字符串:“多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧”必须写在双引号中间。而双引号中间还有一个双引号。也就是意味着字符串声明提前结束了,在“但是”处结束了。后面"我们在不断的让人生变为喜剧",电脑不认识。
这真是一个杯具!那么办?
答:我们需要将双引号原有的意义去掉。再双引号前面加上一个\(反斜线,计算机的专业名词叫转义字符),就可以了。
你可以再执行一下上面的代码,发现不再报错了。同理可推,单引号当中要插入一个单引号显示出来的时候,也可以在单引号声明的字符串中的单引号前面加上(反斜线,转义字符),将单引号的意义(限定字符区间)去掉。
6. 双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
代码如下:
7. 神奇的字符串拼接胶水——(.)点,用来拼接字符串。
上面这段代码是,我们曾经说过双引号能够解析变量,有一个问题:
那,我们需要使用到神奇的胶水:(.)点,用来拼接字符串。
';
$buran = '不然连实习的机会都没有
';
$mimang = '把别人用来迷茫的时间拿到PHP中文网
';
$xuexi = '学习PHP
';
//我们可以把字符串全部拼接起来。
echo $shixi . $buran . $mimang . $xuexi;
?>
因此,刚刚的问题一的代码我们可以改为:
8. 我们将定界符声明字符串视为双引号一样的功能来看待。
加上\n一段
距离的话
我想说:思想有多远,你就跟我滚多远
ABC;
echo $dingjie;
?>
你可以执行发现$weilai,$mimang,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。
再声明一次:字符串的声明每一项都必须记住,非常常用。并且面试题出现的概率非常高!
不可见字符:主要是计算机规定的一些特殊符号。例如:回车(\n)、缩进(\t)等。
八、php数据类型之浮点型
所谓浮点类型,可以理解为:我们数学里面的小数。
【注意】关于精度、取值范围和科学型声明不是学习的重点。因为此块在实际开发中用的特别少。我们将此块的知识点的学习标注为,了解级别。
声明方式分为两种:普通声明浮点数
echo 直接输出了12121.3132,而var_dump 输出了0.8873,还显示了变量$fl的类型为float。
var_dump() 是一个函数。向括号()中间插入变量。这个函数,会打印出来数据类型,还会对应显示变量的长度和值。
九、php流程控制之if else语法
if和else语法
这是一个非常重要的章节,也是PHP当中的一个重要的语法。
【注意】我对这个语法的定义级别为:默写级别。也就是你需要,闭着眼睛,都能够写出来的东西。
我们将if和if...else组合成了四种基本语法,每一种都必须背下来。
{
布尔值为真(true)时执行,可写多行代码;
}
?>
{
布尔值为真(true)时执行,可写多行代码;
}else{
布尔值为假(false)时执行,可写多行代码;
}
?>
很多人喜欢买彩票,我们拿买彩示的过程来写个if的例子。
十、php数据类型之 NULL类型
空在英文里面表示是null,它是代表没有。空(null)不是false,不是0,也不是空格。我们用代码来演示一下。
接下来我们来讲解两个跟null相关的函数,这两个函数非常常用,我们将级别定义为【默写级别】。
empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true。
上述实验证明,$apple为null。将apple放至empty中间。结果执行了真区间。
isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有有一个变量为null,则返回false。否则,则返回true。
unset()这个函数的功能是毁掉变量。unset(变量)括号中间插入想要毁掉的变量名,这个变量就会被毁掉。
十一、php数据类型之资源类型
资源类型
资源类型很多初学者觉得比较难以理解。因为资源类型打印出来只能够看到一个英文的resource。其他的什么在电脑上都不能显示出来,而他有客观存在。
其实,资源类型很简单。我们针对词来进行说明。
电脑里面的资源是指:
1.word,excel等文件
2.有人收藏的美女图片和我们的自拍照片等图片
3.音乐
4.某些人爱看的AVI小电影
5.打开的网页
6.数据库
... ...等等
我们打开一个图片,用PHP来操作它,我们就是操作的一个资源。
我们打开的数据库连接,我们需要连接数据库,数据库就是我们操作的资源。
包括网络连接,连接后发送邮件,我们也可以认为是一个资源。
十二、php数据类型之查看和判断数据类型
我们知道了一个数据的类型,才能进行下一步操作。后面的时候,大家可以学习到更多的知识——自定义功能(函数)。
我们来做一个场景模拟:(注:眼前不用会写这个函数,以后会教大家)
假设,我们可以写一个智能的功能(函数),它让有一个功能,就是打开一个装有学生成绩的电子表格。这个函数非常先进。
1.只有一个人的时候,就返回一个人的成绩,成绩是整型或者浮点型变量。
2.有2个或两个以上人的时候,返回一个数组类型变量,数组中装有多个人的成绩
3.如果没有人的时候,则返回布尔值的变量,变量值为false
通过上面的一个场景模拟,我们知道了,一个函数(功能)有可能返回不同的数据类型。因此,我们可以根据不同的类型来做不同的事情。
判断数据类型很重要,我们需要严格掌握。
【默写级知识点】显示类型的函数、得到类型的函数、判断类型的函数
查看数据类型
1.gettype(传入一个变量) 能够获得变量的类型
2.var_dump(传入一个变量) 输出变类型和值
判断数据类型
我们使用is_* 系列函数。 is_types这一系列的函数,来进行判断某个东西是不是某个类型。如果是这个类型返回真,不是这个类型返回假。
is_int 是否为整型
is_bool 是否为布尔
is_float 是否是浮点
is_string 是否是字符串
is_array 是否是数组
is_object 是否是对象
is_null 是否为空
is_resource 是否为资源
is_scalar 是否为标量
is_numeric 是否为数值类型
is_callable 是否为函数
";
//检查未声明的变量$p是否为空,为空就执行真区间
if(is_null($p)){
echo '第二个真区间';
}else{
echo '第二个假区间';
}
echo "
";
//字符串类型的数值,看看执行的是真还是假
$str = '18.8';
if(is_numeric($str)){
echo '第三个真区间';
}else{
echo '第三个假区间';
}
echo "
";
//把sca的值换成整型、浮点、布尔和字符串试试
$sca = true;
//如果为标量,执行真区间
if(is_scalar($sca)){
echo '第四个真区间';
}else{
echo '第四个假区间';
}
echo "
";
//换成echo,is_int试试,为什么echo执行假区间呢?
if(is_callable('var_dump')){
echo '第五个真区间';
}else{
echo '第五个假区间';
}
?>
注:is_types 很好记。is_ 在前后面跟类型即可。
变量:整型(int) 浮点(float)、布尔(bool)、字符串(string)
混合类型: 数组(array)、对象(object)
特殊类型:空(null)、 资源(resouce)、回调(callback)
为什么最后的实验中echo执行假区间呢?
答:因为echo 不是函数,是基本语法。大家眼前可以不用理解函数和基本语法的区别。了解和不了解在实际开发中没有影响。知道有这个知识点就行。
十三、php数据类型之自动转换和强制转换
PHP在PHP 5.x阶段都是完全的弱类型的编程语言。所谓弱类型,就是在声明变量的时候,不需要指定变量的类型。我要声明一个整型的变量,我不用在前面非得写上类型,再写变量。
而PHP 7 的性能有很大的提高。实际测试的结果,PHP 7的性能与PHP5.6相比,提升了性能接近200%。在PHP 7 中有些地方,我们可以强制指定类型,也可以不用强制指定类型来声明变量。
我们接来下来讲强制类型转换和自动类型转换两个部份。
【默写级别】布尔值的自动类型转换、强制类型转换的英文单词
布尔值的自动类型转换
自动类型转换,就是数据类型在某些情况下,自动会变为其他的类型参与运算。自动类型转换的发生时机是:运算和判断的时候某些值会自动进行转换。
下面的情况是布尔值判断时的自动类型转换:
1,整型的0为假,其他整型值全为真
2, 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。
3,空字符串为假,只要里面有一个空格都算真。
4,字符串的0,也将其看作是假。其他的都为真
5,空数组也将其视为假,只要里面有一个值,就为真。
6,空也为假
7, 未声明成功的资源也为假
我们针对以上针理的规则一项一项来做实验看看结果。
1,整型的0为假,其他整型值全为真
2, 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。
3,空字符串为假,只要里面有一个空格都算真。
4,字符串的0,也将其看作是假。其他的都为真
5,空数组也将其视为假,只要里面有一个值,就为真。
6,空也为假
7, 未声成功的资源也为假
其他类型的自动类型转换
自动类型转换在运算时也可以发生。跟所有我们总结的规律和观点一样:先总结、后实验。
只有标量在运算时会产生以下的自动类型转换:
总结:
布尔值的true参与运算是会变成整型或者浮点的1布尔值的false参与运算是会变成整型或者浮点的0字符串开始处是整型或浮点类型的字符,会转成对应的类型参与运算
强制类型转换
强制类型转换有三种方式:
1.用后面的三个函数可以完成类型转换,intval()、floatval()、strval()
2.变量前加上()里面写上类型,将它转换后赋值给其他变量
3.settype(变量,类型) 直接改变量本身
我们来进行实验:
intval()、floatval()、strval()转换
变量前加上()里面写上类型,将它转换后赋值给其他变量
settype(变量,类型) 直接改变量本身
【你试试】以下是强制类型转换时的特点,每一项你做实验看看对不对:
1.空转为整型会为整型的0
2.空转为浮点会为浮点的0
3.空转为字符串会为空字符串‘’
4.浮点的123.0转为字符串会为字符串123
5.浮点的123.2转为字符串会为字符串的123.2
6.浮点即使小数点再大,它都会被干掉,会舍掉小数点后面的值
7.如果字符串转为整型的时候,如果数值在前面,会将前面的数值拿出来做为整型的转换值。
8.settype(变量,'null'); 等价于 unset()一个变量
9.$目标变量 = (类型)$操作变量 只会改变目标变量的类型,不会改变原变量的类型,Settype是改变原值
十四、php常量和变量之用常量限制用户跳过某些文件
【重点知识】知识级别我们定义为:默写级
常量的使用范围非常广泛。我们在以后,定义我们的工作目录、定义一些特点的帐户密码、版本号等我们都会使用到常量。所以这一块的知识,非常重要。
常量在代码中的定义、书写方式:
define(常量名,常量值)
注:
1.常量值只能为上一章中我们讲到的标量。
2.常量名可以小写,但是通常大写
3.常量名可以不加引号,但是通常加上引号。
4.在字符串中调用常量的时候,必须在引号外面
5.常量名建议只用字母和下划线
我们用代码来实验一下:
1.定义和调用一次常量试试
2.注意项目实验
此外,系统还为我们准备了一些内置的常量。这些常量都是规定好的。我们先熟悉几个,还有更多的系统常量我们学习完上册,入门后再慢慢的增加和学习。
defined()函数来做安全机制
此处知识,可以眼前不用掌握。学习完函数后,再来看本部份代码也可以。
defined()我们来学习这种用法,主是是为了防止其他人绕过安全检查文件。
函数:defined(常量)
功能:向函数的括号后面传入常量,如果常量定义了就返回true,否则返回false;
【情景模拟】假设,我们的这套在线电子商城的软件需要付钱,检查是否付费是通过对软件授权检查来完成的,而文件version.php中就有检查授权的功能,我们在软件中规定,没有授权检查文件version.php就不能使用这个软件。所有的代码都包含了version.php。并且为了防止有人盗版,我还可以把version.php的代码进行了加密。
我们有两个文件:
1.一个文件中间有版本号,版本声明和授权声明。文件名为version.php
2.一个文件中有具体的业务功能。例如:用户注册、登陆等,文件名为users.php
我们该怎么做呢?——也就是说不包含 version.php文件就不让,执行users.php之后的代码。
我们来进行实验:
version.php文件
users.php
实验结果可知:version.php必须要包含 ,不然不会显示后面的echo '用户注册';
十五、php常量和变量之可变变量
可变变量,这个词解释的太过于高大上。看起来很有“bigger”。它还有一个叫法,叫作变量的变量。
我们认为这些叫法上都不太科学。毕竟都是翻译过来的舶来之物。
可变变量其实就是——已声明的变量前,再上变量符。
举例说明:
上面的过程说明:$shu的值为字符串的'biao'。我在$shu前再加上一个$(美元符号),可以理解成为以下的变形过程:
$$shu
${$shu} 分成两块来看
${'biao'} 把变量$shu解释成了biao
$biao 而$biao也是一个变量对应的值是:鼠标
你可以自己写几个可变变量玩玩,请问以下的代码运行结果是多少?