说明:函数的作用在于对一个功能的封装,封装后在别的页面中引入并调用,可以节省代码量,可以冗余。Function 函数名(【形参1】【,参数2】【,形参n……】){要封装到函数的代码;【return 返回值】;}第八章函数.md - 图1Figure : img说明:直接使用需要调用的函数的名就可以了。函数名(【实参1】【,实参2】【,实参n……】);第八章函数.md - 图2Figure : img1.函数定义时的形参,不是一个具体的数值,而是需要接收“实参”的工具而已,形参必须是变量。第八章函数.md - 图3Figure : img2.形参可以给默认值,且可以是多种类型的数据第八章函数.md - 图4Figure : img3.实参就是要给函数传递数据用的工具,可以是具体的值,可以是变量,实参必须和形参“一一对应”;第八章函数.md - 图5Figure : img4.函数名遵循变量的定义规则:字母、数字、下划线且不能以数字开头.5.函数名不能重复;6.Return返回值,如果写了就会返回当前要返回的值,如果没写其实默认返回一个1或者null;第八章函数.md - 图6Figure : img7.return如何返回多个值;第八章函数.md - 图7Figure : img8.返回值必须使用一个变量到函数的调用者这个位置进行接收。第八章函数.md - 图8Figure : img9.如果传递多个值–数组第八章函数.md - 图9Figure : img10.函数的变量称为“局部变量”,不能在函数外使用。第八章函数.md - 图10Figure : img1.函数的调用者把实际的数据传递给函数的形参,这个时候的形参只能在函数内使用。2.函数在运行代码时会新建一个新空间来运行函数内的代码3.运行代码后,如果有返回值,把结果返回给函数的调用者,这个时候运行函数的这个新的空间销毁第八章函数.md - 图11Figure : img说明:有的函数可以直接使用全局变量,这个时候是引用传递第八章函数.md - 图12Figure : img第八章函数.md - 图13Figure : img题:使用一个表单,输入任意数字,使之可以在2,8,16进制到10进制或10进制到2,8,16进制之间转换,形式大致如下如下:第八章函数.md - 图14Figure : img<?php //使用一个表单,输入任意数字,使之可以在2,8,16进制到10进制或10进制到2,8,16进制之间转换//1接收表单的数据 $number = isset($_GET[‘number’]) ? $_GET[‘number’] : ‘’; $zhuan = isset($_GET[‘zhuan’]) ? $_GET[‘zhuan’] : ‘’;$res = ‘’; switch ($zhuan) {
    case 2:
    $res = decbin($number);
    break;
    case 10:
    $res = bindec($number);
    break; } ?> <!DOCTYPE html>



    数:



    第八章函数.md - 图15Figure : img第八章函数.md - 图16Figure : img第八章函数.md - 图17Figure : img说明:就是一个变量如果加上括号,PHP的系统会解析成函数,这个变量的值必须是一个函数的名,否则报错,未定义了。案例:第八章函数.md - 图18Figure : img第八章函数.md - 图19Figure : img说明:在一个函数中调用另一个函数,这个时候称为“回调”;案例:第八章函数.md - 图20Figure : img第八章函数.md - 图21Figure : img说明:匿名函数就是没有名称的函数,这个时候需要用一个变量来存储函数。案例:第八章函数.md - 图22Figure : img第八章函数.md - 图23Figure : img第八章函数.md - 图24Figure : img说明:在一个函数内部再定义函数,这个时候里面的函数只能在函数内使用,不能在外部使用,防止外部人调用函数,这种函数方式不多,面向对象中都是这种方式。案例:第八章函数.md - 图25Figure : img说明:在一个函数内部再次有条件调用自己(当前函数),这个时候就称为“递归调用”,即自己调用自己。代码:第八章函数.md - 图26Figure : img图解:第八章函数.md - 图27Figure : img注意:1.递归调用必须有一个可以退出的条件,否则无法退出递归调用,就会成死归,也就是说必须逐渐的退出。2.在递归调用时每次调用一次函数都开辟一个新栈,这些栈是没有关系的。案例:斐波那契数列:每个数字都是由前面的两个数字的和,第一个和第二个除外。1,1,2,3,5,8,13,21,34………………………..问:给一个数看当前数的值是多少。第八章函数.md - 图28Figure : img第八章函数.md - 图29Figure : img代码实现:准备模板1.创建目录第八章函数.md - 图30Figure : img2.创建配置文件3.实现功能–封装函数<?php //入口文件 //引入配置文件 require_once ‘./config/conn.php’;

    //调用数据库函数库来获取数据 require_once LIB_ROOT . ‘MySQL_func.php’; //var_dump($link_mysql_info); //调用链接函数 mysql_link($link_mysql_info[‘host’],$link_mysql_info[‘root’],$link_mysql_info[‘pass’],$link_mysql_info[‘charset’],$link_mysql_info[‘dbname’]);

    //可以调用获取所有数据的函数 $arr = select_data(‘php07_student’); var_dump($arr); / array (size=5) ‘host’ => string ‘localhost’ (length=9) ‘root’ => string ‘root’ (length=4) ‘pass’ => string ‘’ (length=0) ‘charset’ => string ‘utf8’ (length=4) ‘dbname’ => string ‘php07’ (length=5) /

    //引入首页的模板 requireonce TEMPSROOT_HOME . ‘index.html’; ?><?php //配置文件 //设置编码 header(“Content-type:text/html;charset=utf-8”); //配置网站目录结构 define(‘ROOT’, substr(str_replace(‘\‘,’/‘,__DIR),0,-6)); //网站的根目录 define(‘STYLE_ROOT’, ROOT . ‘style’ . ‘/‘); define(‘LIB_ROOT’, ROOT . ‘lib’ . ‘/‘); define(‘TEMPS_ROOT’ , ROOT . ‘temps’ . ‘/‘); define(‘TEMPS_ROOT_HOME’ , ROOT . ‘temps/home’ . ‘/‘);

    //配置数据链接信息 $link_mysql_info = array( ‘host’ => ‘localhost’, ‘root’ => ‘root’, ‘pass’ => ‘’, ‘charset’ => ‘utf8’, ‘dbname’ => ‘php07’ );