运算符:算术,比较,逻辑,赋值,三目,错误抑制,位运算(三码),自操作,字符串
执行结构:顺序,分支(if和switch),循环(for,while,do-while,foreach)
函数:自定义函数(函数名,参数(形参,实参),函数体,返回值)
返回值指的当函数调用结束以后,该函数给外部调用处返回一些列的数据(数据类型任意:八个数据类型)
如果函数没有任何返回值,可以理解为函数返回的是NULL。
PHP中函数可以没有返回值。
传值方式:值传递(默认的)和引用传递
值传递:将实参复制一份,传递给形参(形参与外部实参变量没有关系),值传递可以通过在调用函数的时候直接使用数据常量。
引用传递:形参是获得实参所指向的数据的内存地址,形参与实参共同指向同一个内存地址。
引用传递语法:在定义函数的时候,给形参使用地址符号&,调用引用传递的函数的时候,必须使用变量(实参必须是变量:不能是数据常量)传递。
引用传递不能使用数据常量
特别注意:引用传值只能使用变量传数据。
将函数外部的数据传入到函数内部供其使用
1. 什么是作用域?
作用域指的就是变量所能使用的范围。
作用域分为两类:全局作用域和局部作用域。
2. 全局作用域和局部作用域定义?
全局作用域
只要在函数外部定义的变量都是全局作用域
局部作用域
在函数内部定义的变量称之为局部作用域
3. 全局作用域和局部作用域功能?
局部作用域的变量只能在函数的内部使用,函数外部不能使用。
全局作用域:
JS中:全局作用域的变量可以在函数的内外都使用
PHP中:全局作用域只能在函数外部使用
想要在函数的内部使用全局变量,在函数的外部使用局部变量。
方案一:
让函数在定义的时候采用引用传值。
方案二:
使用系统预定义超全局变量$GLOBALS,该变量保存了所有的全局变量。
方案一
让函数在定义的时候采用引用传值。
方案二
返回值:将内部数据(局部变量)作为返回值。
方案三
使用global关键字:将局部变量全局化(在创建局部变量的同时,创建全局变量:当前全局变量不存在,如果存在就会产生引用)
引用全局变量
创建全局变量
内存分析1:引用全局变量
内存分析2:创建全局变量
在定义函数的时候,给形参指定默认值,在进行函数调用的时候,可以不给有默认值的参数传递实参。
语法:形参 =默认值
注意:如果一个参数列表中存在有默认值的参数,那么该参数必须在最右边(后面)
1. 什么是静态变量?
在函数内部使用static关键字修饰的变量,函数在多次调用的时候能够共同使用该变量(跨函数共享变量)
语法:static
$变量
内存分析
没有函数名的函数叫匿名函数。
语法
变量 = function(参数列表){
//函数体
//返回值
}; //整体是赋值语句,所以需要语句结束符
匿名函数的使用
因为变量保存了函数的地址,所以必须通过变量来找到函数。系统要识别函数,只认括号,需要给变量增加一个括号来告诉系统当做函数处理。
匿名函数的使用
匿名函数通常用于做别的函数的参数:回调函数
指的是定义好的函数,需要指定的数据类型作为参数或者返回值,是一种对用户的帮助。
mixed:数据类型有很多种,不具体限制
number:数字类型:整型和浮点型
callback:回调函数,指的需要一个可以被执行的函数的名字字符串。
void:null,不需要参数或者没有返回值
可以变化的函数,函数名字是一个变量的值,可以通过变量直接访问函数。
判断用户提交的数据,判断数据的有效性,是否符合指定的数据约束(规范)。
所有的数据类型的判断,都是通过函数来实现。函数都是以is_开始,后面跟对应的数据类型。
所有的函数的返回值都是布尔类型:如果是对应的类型返回true,否则返回false
is_bool:判断是否是布尔类型
is_float:判断浮点型
is_integer:判断整型
is_object:判断对象
is_array:判断数组
is_string:判断字符串
is_resource:判断资源
is_scalar:scalar是标量的,判断是基本数据类型:整型,浮点型,布尔型和字符串型
is_null:是否为空
is_numeric:判断数字或者纯数字组成的字符串
标量判断
数值判断
gettype:获得数据类型
settype:改变数据类型
将数据的类型转换成指定的需要的数据类型。
php是一种弱类型语言。因此在php中有两种方式能够修改数据类型:自动转换和强制转换。
系统根据自己的需求,将不合理的数据类型转换成需要的数据类型。不需要用户(代码)做任何额外的事情。
if条件一定是布尔类型,但是程序所给定的表达式的结果不一定是布尔类型,系统就会自动转换。
碰到一些指定的运算符的时候,也会出现自动转换。
字符串转数值规则
1. 从左边开始碰到第一个不为数字或者小数点的字符截止
2. 如果第一个字符不是数字或者小数点,那么该字符串结果是0
3. 只能读取最多一个小数点
用户通过代码强制的去将某个数据的数据类型转换成目标数据类型。
settype:就能够强制的转换数据类型。
语法二:
(数据类型)变量
int,integer:整型
bool,Boolean:布尔
float:浮点
string:字符串
array:数组
object:对象
php变量的复制:写时复制
$a = 100;
$b = $a; //值传递
//全局区中只有一个数据:100
$b = 50; //修改变量:写
//系统会自动的将原来只有一份100,变成两份100,并且修改其中一份b为50
1. 什么是文件包含?
字面意思是一个文件中包含另外一个文件,希望对应文件的内容可以在当前文件中被使用。
将界面结构中部分被重用的结构部分抽离出来形成单独的文件,然后在每一次需要使用该部分结构的时候,将对应的代码给包含进去。
优点:节省工作量,方便修改(提升维护效率)
将代码中需要共用的部分代码(函数)抽离出来,形成对应的函数文件(php),然后在需要使用的地方加载当前文件,从而可以实现代码的重用。
php通过某种语法,将一个对应php(不一定是php文件)文件中内容(php代码)加载到一个需要使用该代码的php脚本中,从而形成脚本的代码的一部分,帮助脚本正常工作。
语法:有两套文件包含方式
include:include '文件名字’ / include('文件名字’)
require:require '文件名字’ / require ('文件名字’)
文件可以被包含:文件包含语句属于执行性语句,符合代码的逐行执行条件,顺序执行。被包含文件是独立编译,但是可以实现数据共享。
include_once/requrire_once:对一个文件进行多次包含的时候,只会包含一次。
都是包含文件,都是独立编译。
区别在于require一定会去包含对应的文件,如果文件不存在那么会导致致命错误,从而导致代码不再继续执行。
include会尝试去包含文件,如果不存在,会给一个错误提示,但是不影响后续代码的继续执行。
注意:文件包含可以是为了使用被包含文件里面的内容而包含,也可以是为了让被包含文件使用当前文件里面的内容而包含。
文件路径分为两种:绝对路径和相对路径
绝对路径:文件相对磁盘根目录开始的路径(URL)
相对路径:与当前文件相对应的路径(以当前文件为参照点)
文件的包含可以使用任意一种文件路径:建议使用绝对路径。
相对路径:
什么都不用表示当前文件相对路径
./:表示当前目录
../:上级目录
/:网站根目录
PHP在包含文件的时候,如果存在嵌套好办,那么文件的相对路径会发生改变,但是绝对路径不会改变。
绝对路径没有相对路径速度快,如果在项目中能够确定不存在文件包含嵌套或者有嵌套但是不会影响相对路径的时候,可以使用相对路径进行文件包含。
让当前指定位置的代码之后的代码不再执行。为了调试错误。
php中有三种终止方式:exit,die和return
exit与die一致:都是语法结构
语法:exit;/exit();/die;/die();
表示代码执行到该处时候结束执行,如果有输出则输出
return:用在函数中代表返回值,表示当前函数执行到return语句的时候,不再向下执行函数体,直接回到函数调用处。
如果在脚本中出现,代表当前脚本执行终止:return依然代表返回值,数据是返回给文件被包含处。
return在文件中有这么一个特性:能够将文件中的数据传递给另外一个文件。通常会利用这个特性做系统的配置文件。
作业
1. 完善空心菱形作业
2. 九九乘法表:函数定义在一个文件,调用在另外一个html文件中(文件包含)
3. 函数实现斐波那契数列
联系客服