1、PHP的基本标识符
基本语法
<?php
//...PHP代码都写在这个位置
?>
特别注意:
1)以<?php开始 ?>结束
2)PHP中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
3 )程序设计语言都是从上至下顺序执行的
示例代码:
注意:PHP代码的运行必须通过Apache服务器+PHP解析器,所以其访问都是通过http://localhost或http://127.0.0.1 进行访问,如下图所示:
2、PHP与HTML的关系
1)PHP只存在于服务器端,凡是我们通过浏览器看到的,都是HTML(CSS、JavaScript等客户端语言)
2)PHP在做网站中的作用就是按照我们的需求输出正确的HTML代码
3)对于PHP而言,所有的HTML代码都是字符串
在demo01_rumen.php的基础上,对hello world进行加粗处理:
3、PHP中的变量
①变量就是 临时 存储数据的容器,浏览器关闭后,变量也会随之消失。
②变量就是在程序运行过程中,可以发生改变的量。
基本语法:
数字键4上面有一个美元符号,shift + 数字4 = $(美元符号)
$变量名称= 变量的值;
提出问题:定义几个变量,用于存储用户名、密码、家庭住址等信息
demo02_bianliang.php 示例代码:
运行结果:
我们发现,当我们输出的字符串中包含中文时,默认会出现乱码,这个时候我们可以添加一个header函数进行处理。
再次运行,结果如下图所示:
4、PHP中变量的命名规则
1)变量名必须以字母或下划线 "_"开头。
错误的:$123 = ‘abc’;
正确的:$_123 = ‘abc’;
2)变量名只能包含字母数字字符以及下划线。
错误的:$a(b)c
正确的:$abc
3)变量名不能包含空格。如果变量名由多个单词组成,那么应该使用下划线进行分隔(比如 $my_string),或者以大写字母开头(比如$myString)。
错误的:$abc 123
正确的:$abc_123,$myString(驼峰命名法)
5、变量的数据类型
PHP属于一门弱类型语言,定义变量时可以无需指定数据类型,你给它赋予什么类型的值,其就是什么类型。
Java :String c = ‘helloworld’; //明确指定变量的数据类型
PHP :$c = ‘hello world’; //赋予什么样类型的值,其变量就是什么类型
PHP中的八种数据类型:四种标量类型、两种复合类型、两种特殊类型。
整型 Integer(Int),班级管理系统,与年龄相关信息,19、20、21
浮点型 Float,京东产品管理,与价格的相关信息,43.50、39.10、62.50
布尔型 Boolean,布尔类型非常简单,真或假,true或false
字符串 String,用于表示文章标题、描述、内容,都是字符串
数组 Array,PHP中非常强大的数据类型,新闻列表,产品列表等数据都是放在数组
对象 Object,PHP面向对象的编程语言
资源 Resource,资源类型,比如验证码,读取文件
空类型 NULL,空类型,置空
使用代码,查看PHP中变量的数据类型?答:可以使用var_dump来查看变量的数据类型
特别说明:
echo :echo语句非常简单,但是其只能输出简单类型的数据,四种标量
如:
①echo 10;
②echo 43.50;
③echo true; true会转化为1,false会转化为0,但是使用echo不输出
④echo ‘hello world’;
demo03_leixing.php 示例代码:四种标量
demo04_leixing.php 示例代码:两种复合类型
demo05_leixing.php 示例代码:两种特殊类型,资源类型|空类型
6、变量的访问范围
什么是变量的访问范围,说白了就是变量在哪里可以使用,在哪里不可以使用。
demo06_fanwei.php 示例代码:
运行结果:直接报错,如下图所示:
这个问题就涉及到PHP中变量的访问范围。
一定要注意:在函数外部就是全局作用域,在函数的内部就是局部作用域,在全局作用域中无法访问局部作用域,反之,在局部作用域中也无法访问全局作用域。
问题:有同学肯定有一个疑问,如果我想在局部作用域里面访问全局变量怎么办呢?
答:可以使用关键词global,在PHP中内置关键字,比如echo、global不区分大小写
7、编程语言与脚本语言的区别
编程语言主要指的是后端的编程语言,比如ASP、PHP、JSP,这些语言都需要有服务器的支持,比如IIS、Apache、Tomcat,那么这些语言就是编程语言。
脚本语言不需要有服务器的支持,比如HTML、CSS、JavaScript,他们都可以直接双击运行,不需要任何服务器的支持,所以他们都是脚本语言。
8、单引号与双引号的区别
在PHP中,一共有8种数据类型,有一种数据类型叫做字符串类型。如何定义字符串呢?
答:在PHP代码中,我们可以通过单引号或双引号来定义一个字符串。
由上图可知,对于普通的数据,单引号和双引号没有任何区别。但是如果单引号中或双引号中出现变量,两者符号就完全不同了。
特别说明:在PHP中,单引号中的变量会直接输出而不解析。但是双引号中的变量,会解析后在输出。
问题:放在双引号中的数据解析快,还是放在单引号中的数据解析快?
答:由于单引号中的变量不解析,直接输出,所以运行速度要略快于双引号。所以在PHP开发中,能用单引号的尽量不要使用双引号。
9、常量
常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变。常量默认为大小写敏感。按照惯例常量标识符总是大写的。
常量名和其它任何PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。
基本语法:
define(‘PI’,3.14);
举个例子:比如我们想求圆的面积(πx r x r),π约等于3.14
demo09_changliang.php 示例代码:
10、运算符
1)算术运算符
+ - * / %(取模或取余) ++(加加) --(减减)
$i = 10;
++或--放在变量的前面:++$i或--$i,变量本身先加1或减1,然后在参与运算
++或--放在变量的后面:$i++或$i--,先参与运算,然后变量本身在加1或减1
demo10_suanshu.php 示例代码:
运行结果:41,为什么是41呢?
在PHP中,代码都是从上往下,一行一行执行的,所以首先定义$i = 20。然后执行第7行代码$i = $i + $i++又由于$i++的优先级大于+,所以先运算$i++,由于++放在变量的后面,所以先参与运算,结果20。但是$i变量本身要进行+1操作,所以此时$i = 21。$i = 21 + 20,最终结果为41。
2)比较运算符
> < >= <= == === != !==(不恒等于)
== :只判断两边的值是否相等,不判断变量的数据类型
=== :除了要判断两边的值是否相等,还需要判断两边的数据类型是否相等
3)逻辑运算符
&& :逻辑与,只有两边的条件都成立,结果返回为true。反之则返回为假
|| :逻辑或,只要有一边的条件成立,结果返回为true。反之则返回为假
!:逻辑非,取反的含义,如果表达式为真,返回为假。反之则返回为真
讲个小故事:男多女少,相亲
①女孩子1号② 女孩子2号
女孩子1号,人长的漂亮,白富美。相亲成功的要求,必须要有车而且还要有房。
有车 && 有房,牵手成功
女孩子2号,人长的一般。相亲成功的要求,只要有车或有房。
有车 || 有房,牵手成功
4)字符串运算符(比较特殊,是一个点号.[我是一个点号])
在PHP中,点号代表连接的含义,demo12_lianjie.php 示例代码:
5)赋值运算符
= += -= *= /= %=
在PHP中,其他运算符都是从左向右开始运算的。但是赋值运算符比较特殊,就是一个等于号=,它的含义就是把右边的执行结果,赋值给左边。所以其运算顺序是从右向左结合。
比如:$i = 20,$i = $i+2。这么理解,就是首先把数字20赋值给$i。再次执行,$i = $i + 2,相当于先运算$i + 2,结果为22,然后在把22赋值给左边的变量$i。
11、运算符的优先级
小学老师和我们说过:一定要先算乘除后算加减,有括号先算括号里面的。
记住:
++或--优先级最高 > * / % > + - > (> <) > == === > && || ! > =
12、PHP中的流程结构(选择结构)
1)if...else if...else结构
if(条件){
...代码
} else if(条件) {
...代码
} else if(条件) {
...代码
} else {
...代码
}
2)switch结构
switch(条件) {
case 条件1:
...代码
break;
case 条件2:
...代码
break;
default:
...代码
}
demo13_if.php 示例代码:
demo14_switch.php 示例代码:
问题:为什么选择结构里既有if结构又有switch结构呢?
①对于固定值的判断,两者的效果是一致的。但是switch的执行效率略高。
② switch只能进行固定值的判断,而不能判断范围。但是if结构可以进行范围的判断。
13、PHP中的流程结构(循环结构)
①for循环
for($i=0;$i<100;$i++) {
//循环结构
}
$i = 0 :初始化结构
$i < 100 :每次循环时,系统都会对$i进行判断,是否小于100
$i++ : 可能是++也可能是--,每次循环时,自增或自减
②while循环
while(条件) {
//循环结构
$i++或$i--
}
③do...while循环
do {
//循环结构
} while(条件); //注意,while后面必须有分号结尾
demo15_xunhuan.php 示例代码:
①使用for循环输出从0到9
②在①的基础上,使用while循环输出从10到1(for循环之后$i=10)
③在②的基础上,使用do...while循环输出从0到9(while循环之后$i=0)
总结循环结构:
①什么时候使用for循环,什么时候使用while循环?
对于循环次数已知的情况,比如循环100次,建议使用for循环
对于循环次数未知的情况,比如循环n次,建议使用while循环
② while循环与do...while循环的区别?
while循环是先判断后执行
do...while先执行后判断,所以do...while始终要比while多执行1次
14、循环结构中的两大关键词
break :中止整个循环结构(整个循环都结束了)
continue :中止当前循环,继续下一次循环(比如循环100次,50次continue,51次继续执行)
demo16_keyword.php 示例代码:
运行结果: