一、函数式编程
1.1 函数简介
函数(function)
- 函数本质就是一段代码
- 在函数的代码这个那,通常是用于完成一个需要重复执行的操作
- 通过使用函数,可以将哪些需要城府执行的操作,定义成一个函数名,当需要执行这些操作的时候,直接调用这个函数名就可以
- 通过函数,最大的作用就是可以实现代码的复用
函数的特性:
- 函数名不区分大小写【关键字不区分大小写,变量名区分大小写】
- 函数定义和调用没有先后顺序【可以将调用函数的代码,写在定义函数的前面】
- 可以用function_exists('test1')判断函数是否存在,在if内定义函数
- 还能输不会自动执行,只能在调用的时候才去执行
- 可以自定义函数内(内部函数不能直接调用)
1.2 定义函数
在php中,使用function关键字来定义函数,例如:
function greet($name){
echo "Hello,".$name."!";
}
上面的代码定义了一个名为greet的函数,它带有一个参数$name,并在屏幕上输出一条问候信息。要调用此函数,可以将参数传递给它,例如:
greet("jreen");
这将输出“Hello,jreen!” 到屏幕上
函数语法
function 函数名称(参数1,参数2 ...){
//程序业务内容
return 返回值; //如需函数有返回值时使用,否则函数返回值为null
}
函数名称
- 它是函数在程序代码中的识别名称,函数名可以是以字母或下划线开头后跟零个或多个字母、下划线和数字的任意字符串。函数名不区分大小写。
- 命名函数时不可使用已声明的函数,或php内建的函数名称。
返回值
- 当调用函数时需要它返回一些数值,那么就要在函数体中用return语句实现。格式如下:
return '返回值'; //返回值也可以是一个表达式
1.3 函数返回值
执行函数的结果
执行结果又两个:输出结果,返回结果
输出结果:
- 就是在函数中,用echo、var_dump、print_r 进行输出指定的内容
返回结果:
- 就是在函数中,用return 来返回一个值,返回结果默认是不显示的,返回结果通常是要进行接收的。
- 当函数执行到return的时候,后面的代码就不再执行
- 函数的返回值可以是任意类型
- 函数只可以有0个或1个返回值,如果想返回多个值可以通过返回数组或对象实现
案例:在函数中返回多个值
<?php
header("content-type:text/html;charset=utf-8");
function fun1(){
echo "========函数开始执行==========<br>";
$userInfo = array("tom",18,"tianjin","15688882222");
return $userInfo;
echo "========函数执行结束==========<br>";
}
$res = fun1();
echo $res[0]; # 输出tom
echo $res[1]; # 输出18
echo $res[2]; # 输出tianjin
echo $res[3]; # 输出15688882222
?>
1.4 函数参数
函数可以具有任意数量的参数,例如:
function multiply($a,$b,$c=1){
return $a * $b * $c;
}
$result = multiply(2,3);
echo $result; //输出 6
$result = multiply(2,3,4);
echo $result; //输出 24
上面的代码定义了一个名为multiply的函数,它具有两个必须参数$a和$b,以及一个可选参数$c(默认为1)。在第一个实例中,将使用默认值计算 ;而第二个示例中,将使用传递的值。
案例1:通过函数,对两个数字进行求和,然后在另一个函数中,判断之前两个数字的和是否大于100
<?php
header("content-type:text/html;charset=utf-8");
function getAdd()
{
$num1 = 36;
$num2 = 99;
$sum = $num1 + $num2;
return $sum;
}
function checkNum($num99)
{
if($num99>100)
{
echo "两个数字的和大于100";
}
else
{
echo "两个数字的和不大于100";
}
}
$sum1 = getAdd();
checkNum($sum1);
?>
案例2:向函数传入两个数字,返回较大的数字
<?php
header("content-type:text/html;charset=utf-8");
function fun1($num1,$num2)
{
if($num1>=$num2)
{
$res = $num1;
}else{
$res = $num2;
}
return $res;
}
$num = fun1(3,5);
echo "较大的数字是 $num";
?>
1.5 匿名函数
在PHP 5.3及更高版本中,可以使用匿名函数。匿名函数是没有名称的函数,例如:
$greet = function($name){
echo "Hello, ".$name."!";
};
greet("john"); //输出Hello,john"
上面的代码创建了一个匿名函数,并将其分配给变量$greet。该函数可以向常规函数一样调用。
二、文件包含简介
复杂的程序必须要分文件:
- index.php 前台
- conn.php 链接数据库的
实现文件包含/导入
include
require
例如:
demo1.php 文件内容
function show()
{
echo "1111111111111111111"
}
在 Test.php 中使用
include 'demo1.php';
show();
include和require的区别
当要包含的文件不存在时
- include 会产生一个警告(warning),该语句后面的程序会继续执行
- require 则产生一个致命错误(Fatal error),程序就此终止
- include 一般是放在流程控制的处理部分中。PHP程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
- require 通常放在PHP程序的最前面,PHP程序在执行前,就会先读入require所指定引入的文件,使它变成PHP程序网页的一部分。常用的函数,一般可以用这个方法将它引入到网页中。
- include有返回值,而require没有
他们两个的用途是完全一样的,不一定非得那个放在最前面那个放在中间。他们最根本的区别在于错误处理的方式不一样。require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误;include一个文件存在错误的话,那么程序不会中断,而是继续执行,并显示一个警告错误。
三、变量作用域
3.1 变量能见度
所谓变量的能见度,意指变量在程序中的可作用范围。当一个变量执行赋值动作后,会随着声明
局部的差异,而有不同的作用范围。大致上来说变量会依据声明的局部分为下列两种:局部变量和全局变量
3.2 局部变量
在函数之中声明的变量就是局部变量,并且该变量只有在函数范围之中才能使用。
如果其他程序局部需要调用使用该变量值时,必须通过【return】指令,来将其传回至主程序区块已做后续处理
$num=1;
function p(){
$hd =3; //定义局部变量
echo "在函数中显示局部变量\$hd值:$hd</br>";
}
p()
echo "在函数外显示变量\$hd值:$hd <br>";
3.3 全局变量
在函数范围之外声明的变量为全局变量,在函数中无法直接使用全局变量
函数要使用全局变量,必须要利用global引用或$GLOBALS超全局数组引用
$num = 1;
function test() {
global $num; // 声明全局变量$num
$num = 2; // 修改全局变量$num的值
echo $num; // 输出2
}
test(); // 调用函数test
echo $num; // 输出2
四、常用的内置函数
- is_string() 判断是否是字符串,如果是,则返回真
- strlen() 字符串的长度
- strtolower() 字符串转换为小写
- strtoupper() 字符串转换为大写
- ucfirst() 字符串首字母大写
- ucword() 字符串首个单词大写
- ucwords() 字符串每个单词首字母大写
- trim() 去除掉两侧的空格
exit()
功能:输出一个信息,并中止程序运行
语法:void exit([strint `$status`])
举例:exit("**程序运行出错了!")
对比
break:停止循环
return:停止函数
exit:停止程序