什么是PHP?
拍黄片。
HTML:HyperText Mark-up Language 超文本标记语言
PHP(PHP:Hypertext Preprocessor )超文本预处理器,是一种运行在服务器端的脚本语言,尤其适合web开发。
PHP能干什么?
收集表单数据
生成动态网页
收发cookies
跨平台运行
输出图像
文件处理
处理XML格式的数据
处理JSON格式的数据
会话跟踪
。。。。。
服务端脚本,用于写web网页(主攻)CGI
命令行脚本,CLI
编写桌面应用程序
PHP的特点
跨平台运行
开源免费
http://www.github.com
支持大多数的web服务器
支持很大范围的数据库
PHP的发展史
1995年由Lerdorf(PHP之父)发明
1998年PHP3发布
2000年PHP4发布,开始引入面向对象的思想(半成品)
2004年PHP5发布,完全的支持面向对象思想
5.4或者5.6最稳定
2015年12月3号直接发布了PHP7,速度翻了一倍
第一个PHP文件
1.环境装好之后,进入到网站根目录(www,如果不是wampserver,有可能是htdoc)
2.新建的文件后缀名一定是.php,文件名不能是中文的
3.写php代码:phpinfo();
4.在浏览器中访问文件:http://localhost:80/demo.php
HTML中嵌套PHP代码:
1.文件后缀必须是php
2.可以嵌套到任何地方:body中、html之外、属性中、css中
3.PHP代码必须被<?php ?>所包裹
PHP的标记
1.标准风格(常用)
<?php php代码 ?>
5.<?= 是echo的简写(常用)
<?='123';?> 相当于 <?php echo '123'; ?>
2.长风格(废物!!!!)
<script language="php">php代码</script>
3.短风格(废物!!!!)
<? php代码 ?>
需要在php.ini中开启short_open_tag(将它设置为on,默认为off)
4.asp风格(废物!!!!)
<% php代码 %>
需要在php.ini中开启asp_tag(将它设置为on,默认为off)
注意:
PSR规范中,只允许使用<?php ?>和<?= ?>这两种
如果是纯php文件,标准风格的结束标记可以不写
指令分隔符
PHP中语句分为两种
1.结构定义语句
流程控制、分支、循环、函数。。。用大括号标识,可以不加分号
2.功能执行语句
输出、变量定义、函数调用。。。后面必须加上分号
提示:php的结束标记中隐含了一个分号,最后一条语句可以不加分号
PHP中的注释
注释掉的代码,PHP都会忽略解析
1.//单行注释
//注释内容。。。
2.多行注释
/*
注释内容
*/
3.#单行注释
# 注释内容。。。
PHP中对空白符的处理
PHP会忽略空格、换行、tab制表符的解析,所以可以利用这个特点写出可读性比较高的代码
要求:php代码必须要按照严格的缩进;PSR规范规定,缩进只能4个空格(因为tab制表符的宽度,编辑器解释不一样,不利于代码的移植)
变量
什么是变量?
变量是用于临时存储值的容器
值可以是数字、文本或者其他一些比较复杂数据(数组、对象)
变量的特性
PHP是弱类型的语言,不必告知变量的类型是什么,它会根据存储的值来决定这个变量是什么类型的
*变量的命名规范:
1.必须以$开始,后面跟变量名
2.变量名由字母、数字或者下划线_组合而成
3.不能以数字开头
4.严格区分大小写
5.可以是中文,但是别让我看到这种代码,不然罚抄10000遍
PHP中的数据类型
4种标量类型
boolean 布尔型
只有两个值,要么是true,要么是false
通常用于if判断,其他类型转换为布尔型得到false的情况:
布尔型:false
字符串:'' '0'
整型:0 -0
浮点型:0.0
数组:array() 空数组
null:null(包括未定义的变量)
其他所有值都被认为是true
integer 整型
1.整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。
八进制表达,数字前必须加上0(零)
十六进制表达,数字前必须加上 0x
二进制表达,数字前必须加上 0b
2.PHP中整型的字长用PHP_INT_SIZE表示,一般占4个字节
3.整型的取值范围:PHP_INT_MAX 正负二十多个亿!超出取值范围自动转换为浮点型
-2147483647~2147483647
float 浮点型
1.浮点数,就是有小数点的数,通常用来表示整数无法表达的数值,比如金钱值、距离值、速度值
2.可以用科学计数法来表示
3.在PHP中float也有最大数,1.8e308
4.浮点数的精度有问题
5.将浮点数取整的函数
round() 四舍五入
floor() 舍去取整
ceil() 进一取整
string 字符串类型
定义方式:
1. 单引号
2. 双引号
3. heredoc 定界符方式
4. nowdoc(5.3以上)
单双引号的区别:
1、双引号可以解析变量;单引号不能解析变量,会原样输出;
2、双引号可以解析转义字符;单引号只能转义\\和\'本身;
3、单双引号都不能自己嵌套自己,可以互相嵌套
转义字符:
\r 回车
\n 换行
\t 制表符
\\ 斜线本身
heredoc和nowdoc
heredoc定界符可以嵌套单双引号,可以解析变量和转义字符
nowdoc可以嵌套单双引号,不能解析变量和转义字符
建议:尽量使用单引号,效率略高
2种复合类型
array 数组类型
object 对象类型
2种特殊类型
resource 资源类型
null 空
只有一个值,就是null本身
得到null的情况:
1、直接赋值为null
2、未被赋值的变量,默认值也是null
3、被unset()删除掉的变量也是null
PHP中的伪类型(看手册,var_dump()),并不是PHP的原始数据类型
mixed:代表这个参数可以是多种不同的类型
number:代表这个参数可以是int或者float
pow()
callback:还有个别名叫callable,代表这个参数必须是一个函数(回调函数)
call_user_func()、session_set_save_handler()
void:代表这个函数不接收任何参数;如果作为返回值,表示这个返回值是无用的
time( void )
var_dump()
unset()
PHP中的类型转换
强制转换
(int)/(integer) 强制转换为整型
(bool)/(boolean) 强制转换为布尔型
(float) 强制转换为浮点型
(string) 强制转换为字符串
(array) 强制转换为数组
(object) 强制转换为对象
(unset) 强制转换为null
自动转换
布尔环境
数值环境
字符串环境
数据类型的判断:
is_bool() 检测变量是否是布尔型
is_string() 检测变量是否是字符串类型
is_int() 检测变量是否是整型
is_float() 检测变量是否是浮点型
is_array() 检测变量是否是数组类型
is_object() 检测变量是否是对象类型
is_resource() 检测变量是否是资源类型
is_null() 检测变量是否是null空类型
is_scalar() 检测变量是否是标量类型(int、float、string、boolean)
is_numeric() 检测变量是否是数字或数字字符串
gettype($a) 获取变量的类型
settype($a, 'bool') 设置变量的类型(类似于强制转换)
常量
常量
汉语字典中第1条解释:长久,经久不变,常量也就是恒量
一经定义,不能删除和改变。
常量的定义:
define
define('常量名', 常量值);
const
const 常量名 = '常量值';
常量名:
和变量名一样,只能是数字、字母或下划线;
不能以数字开头 (定义的时候可以,但用不了)
严格区分大小写(define可以通过第3个参数指定是否区分大小写,true不区分)
常量值:
define定义的常量,除了object之外,都可以;(数组是PHP7新加的)
const定义的常量值,不能是资源和对象;
define和const的区别:
const可在类中使用,define不能
const不能在条件语句中定义常量
const采用一个普通的常量名称,define可以采用表达式作为名称
const只能接受静态的标量,而define可以采用任何表达式
const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。
提示:echo一个未定义的常量时,会报一个notice并将常量名自动转换为字符串输出;
defined(常量名)
用于检测常量是否定义
预定义常量:get_defined_constants()获取当前已经定义好的常量!
PHP_INT_MAX
PHP_INT_SIZE
PHP_VERSION
...
魔术常量:
值会随着环境的变化而改变
__LINE__ 当前行号
__FILE__ 当前文件
__DIR__ 当前文件的目录
__CLASS__
__METHOD__
__NAMESPACE__
。。。
运算符
运算符是可以通过给出的一个或多个值来产生另一个值的东西;
有3种类型的运算符
一元运算符
只能够接收1个值参与运算的叫一元运算符
1 -1 负值运算符 ++ -- !
二元运算符
2 + 2 算术运算符 + - * /
三元运算符
3 可以接收3个值的就是三元运算符
算数运算符
+ - * /
% 取余(取模)运算
39 % 3 == 0 求两个数相除的余数;39除以3余数为0
递增递减运算
++
$i++; //后递增: 先返回$i,再将$i的值加1,下次用的时候值就是加1后的
++$i; //前递增:先将$i的值加1,然后返回加过1后的$i
--
$i--; //同上
--$i;
提示:对布尔值无效
字符串运算符
. 将其左右参数进行拼接运算
.= 将右边参数,附加到左边参数之后
赋值运算符
=
将右边的表达式的值,赋值给左边的变量
+=
$a += 3; //将$a加上3之后再赋值给$a,可以拆为$a = $a + 3;
-= *= /= %=
比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
=== 全等于
!= | <> 不等于
!== 不全等于
逻辑运算符:
逻辑与:&& and
想娶你们丹姐,你要有房,并且还要有车!
洗脸:左脸和右脸
只有两边都为true,才返回true,否则返回false
逻辑或:|| or
想娶凤姐,要么你财大,要么你器粗!
丢钱包:你找到了,或者我找到了
只要有任何一边为true,结果就为true;
注意:前面为true,后边就不再执行,俗称短路
逻辑非 !
小星星本来是纯爷们(true),去了趟泰国,被砍了一刀(false),就不纯了
就是取反的意思
$bool = true;
!$bool == false
逻辑异或 xor
男(true)男(true)不能结婚;
女(false)女(false)也不能结婚
两边不一样才返回true,否则返回false
位运算符(了解)
按位与 &
按位或 |
按位异或 ^
左移 <<
右移 >>
按位非 ~
其他运算符
?: 三元运算符
表达式1 ? 表达式2 : 表达式3;
1为真就执行2,为假就执行3;
@ 错误控制符,可以屏蔽错误
`` 执行运算符,可以执行一些操作系统的命令
//别急,讲到相应知识点的时候会补充讲解
=> 数组下标指定符号
-> 对象成员访问符
instanceof 类型运算符