php基础语法-数据类型、运算符、分支结构、包含文件

ASCII编码

ASCII码一共有128个,一个ASCII编码占用1个字节,也就是8位。所以我们书写字符串的时候,一个字母占用1个字节。
ASCII编码全部都是连续的,比如A是65,B是66,C,67。
ASCII编码小写字母比大写字母大32。比如A是65,小写a是97。

chr() : 将一个数字转换成对应的ASCII码的字符。
ord() : 将一个ASCII码的字符转换成相对应的数

\num 就是将八进制的num转换成ascii编码
\xnum 就是将十六进制的num转换成ascii编码

布尔型

数字:0、0.0、0.00 等0数都是false
字符串:”0”、” “空字符串都是false
null 和所有为空的数据类型都是false

数组

如果不给数组添加下标,则默认下标从0开始依次递增
如果数组元素下标之前已经存在数字下标了,那么新的元素下标则为之前元素下标的最大值+1;
如果数组元素存在同样的下标,那么后面下标对应的值会将前面的值给覆盖
数组的下标只能是字符串或者整型,如果是其他数据类型,他会将其强制转换成字符串或者整型。

对象

对象和数组非常的相似,唯一的区别就是可以在对象里面书写函数,所以我们一般成对象为有生命的数组

空型 null

如果一个变量,我们不进行赋值,那么他就是一个null
同样的我们也可以主动的给一个变量赋值为null
一般情况下,如果一个变量占据了很大的空间,我们又暂时用不到他,我们就可以将他赋值为null,这样他所占据的空间就会被释放

资源 resource

一般来说,我们不能自己去创建一个资源,所有的资源都是php已经预先定义好的,我们所能做的就是直接拿过来使用。

数据类型的转换

字符串存储在计算机中,是以ASCII编码进行存储,所以他们的存储方式不一样,在做不同数据类型计算的时候,计算机会自动的做一个数据类型的转换

计算机自动的做数据类型的转换

1
2
3
$a = 12;
$b = '4abc';
echo $a+$b;

获取的数据和我们想要的结果不一样,所以我们需要手动的做数据类型的转换

1
2
3
$a = 12;
$b = 3.45;
echo $a+(int)$b;

(需要转换的数据类型)需要转换的数字即可

如果是一个纯数字的字符串转换的结果就是数字本身,如果带有字母,则从最左边寻找,如果遇到字母,则直接将右边的部分抛弃,如果是空的内容,则强制转换整型的结果为0,false为0,true为1

运算符

当进行逻辑运算的时候,如果左边已经达到了最终的结果,那么php为了节省运算的时间,右边就不进行运算了,那么相当于右边的内容被短路了。所以为了避免逻辑短路,尽量不要在逻辑运算符中做算数运算

思考: a++和a+=1对于a本身而言是否一样?
答案: 不一样,在++操作字符串的时候,他会做ASCII编码操作。
一般来说,只有在算数运算中使用自增自减操作

常用的函数

isset()

isset(变量名) : 判断一个变量是否已经被定义。如果被定义,返回的结果是true,否则返回的结果是false。
只有变量没有被定义或者变量被定义的结果是null,那么isset()返回的结果是false,除此以外,只要你定义了这个变量,isset的结果就是true。

empty()

语法:empty(变量名),如果变量里面的内容不为空,则返回的结果是false,否则返回的结果为true。

empty转换的结果和boolean转换的结果正好相反,所以,只需要记住其中一个就可以了。

is_XXX

XXX表示一个数据类型。
is_int(变量) 判断变量是否是一个整型,true表示是整型,false表示不是整型。
is_boolean()
is_string()
is_float()

替代语法

将开始的大括号使用:进行替代,将结束的大括号使用end XXX来替代,这里面的XXX代表的就是这个结构的名称
结尾加上“;”分号

替代语法一般来说,是写在html和php的混编语言中
使用替代语法,可以非常清晰明了的判断,结束标记到底是属于哪个结构

if语句中如果要是用elseif的话在else和if之间不要加上空格

思考:如果for循环执行了n次循环,那么初始化变量,条件判断和变量更新分别执行了多少次?
答案: 初始化变量执行1次,条件判断执行n+1次,变量更新执行n次。

break,continue参数的问题
break和continue默认的参数是1,代表break和continue只会跳出当前的一层for循环,如果你想让break和continue一次性跳出多层循环,需要在break和continue的后面加上一个需要跳出的层数

关于switch跳出循环的问题
我们可以将switch看成是一个只执行一次的循环体,所以如果要在switch中跳出循环,则要在break的基础上+1

在switch语句中写break和continue的效果是一模一样的

绝对路径和相对路径

所谓的相对路径,就是相对于当前文件去查找另一个文件就是一个相对路径。
绝对路径就是不参照任何一个位置,所书写的地址。
程序中的绝对路径就是从盘符开始,去书写一个路径

../文件名 上一级文件夹
./文件名 当前文件夹
文件名 当前文件夹

包含文件

所谓的包含文件就是将需要的文件加载到你所编写的文件中去,包含文件有四种方式。
include include_once require require_once

include加载文件
语法,include(需要加载的文件) , include 需要加载的文件

相对路径的位置不太好确定,在工作中容易引发报错,所以在工作中最好去使用绝对路径

打开phpinfo(),搜索include_path

使用set_include_path(‘需要设置的目录’)

1
2
3
$str = get_include_path();
set_include_path('c:/php/joker;'.$str);
include('joker.php');

思考,将原来的路径放在新增文件夹路径的左边效率更高还是右边效率更高?
答案:放在右边更高
一般情况下,在项目中,会将所有需要加载的文件统一放在一个文件夹中,通过set_include_path去进行设置加载

include PK require
require也是加载一个文件
include加载文件,如果出现了错误,会报一个警告性(warning)的错误,然后代码还会继续往下执行。
require加载文件,如果出现了错误,会报一个致命性(fatal error)的错误。然后代码就不会继续往下执行。

include PK include_once
include如果载入相同的文件都会分别去执行,但是include_once如果载入相同的文件,只会执行一次。

include_once 的效率更低,因为include_once在加载一个文件之前,都会检查前面的代码,看看这个文件是否已经被加载过了

exit()/die()
exit()和die()是同一样函数,只不过起的名字不同。它的作用就是让一个程序终止执行。

sleep()
延时函数,让一个程序停止任意秒后继续执行