第3章 函数_补充案例 下载本文

内容发布更新时间 : 2024/6/3 21:59:47星期一 下面是文章的全部内容请认真阅读。

博学谷——让IT教学更简单,让IT学习更有效

2、 练习目标

? 掌握全局变量在函数内部使用的方法

3、 需求分析

全局变量是不能直接在函数内部使用的,需要使用global关键字,或使用$GLOBALS超全局预定义数组变量。

现在举例说明:假设在函数外定义一个全局变量$link ,用于存储连接数据库的资源,然后我们在函数getUsersInfo()函数中直接使用$link,与在函数getUsersInfo()中使用关键字global声明$link,或是使用$GLOBALS超全局预定义数组变量,进行对比。

4、 设计思路(实现原理)

1)编写PHP文件link.php,获取连接数据库的资源$link,设定字符集,选择数据库。

2)在link.php中编写getUsersInfo()这个函数,执行获取用户信息语句,并同时传递$link。

二、案例实现

1、在link.php中定义getUsersInfo函数,代码如下:

$link = @mysql_connect('localhost','root','123456') or die('数据库连接失败!');

mysql_query('set names utf8',$link); $mysql_select_db('mysql',$link);

function getUsersInfo(){ }

getUsersInfo();

$result = mysql_query(\while($row = mysql_fetch_assoc($result)){ }

print_r($row);

运行程序,结果如下图所示:

对比,代码如下:

6

博学谷——让IT教学更简单,让IT学习更有效

$link = @mysql_connect('localhost','root','123456') or die('数据库连接失败!');

mysql_query('set names utf8',$link); mysql_select_db('mysql',$link);

function getUsersInfo(){ }

getUsersInfo();

global $link;

$result = mysql_query(\while($row = mysql_fetch_assoc($result)){ }

print_r($row);

运行程序,结果如下图所示:

对比,代码如下:

$link = @mysql_connect('localhost','root','123456') or die('数据库连接失败!');

mysql_query('set names utf8',$link); mysql_select_db('mysql',$link);

function getUsersInfo(){ }

getUsersInfo();

$result = mysql_query(\while($row = mysql_fetch_assoc($result)){ }

print_r($row);

运行程序,结果如下图所示:

7

博学谷——让IT教学更简单,让IT学习更有效

对比,代码如下:

$link = @mysql_connect('localhost','root','123456') or die('数据库连接失败!');

mysql_query('set names utf8',$link); mysql_select_db('mysql',$link);

function getUsersInfo($link){ }

getUsersInfo($link);

$result = mysql_query(\while($row = mysql_fetch_assoc($result)){ }

print_r($row);

运行程序,结果如下图所示:

三、案例总结

全局变量在函数的局部使用,必须通过: 1、通过参数传递,传值和传引用。 2、通过global关键字来提升。

3、通过$GLOBALS预定义超全局数组变量。

8

博学谷——让IT教学更简单,让IT学习更有效

案例3-6 递归函数 一、案例描述

1、 考核知识点 递归函数

2、 练习目标

? 熟练掌握递归函数的妙处

3、 需求分析

递归函数通常有很高的使用价值,常用来将复杂的问题分解为简单的并相同的情况,反复做这种处理直到问题解决。

现在举例假设:有一只猴子摘了一堆桃子,当即吃了一半,可是桃子太好吃了,它又多吃了一个,第二天它把第一天剩下的桃子吃了一半,又多吃了一个,就这样到第十天早上它只剩下一个桃子了,问它一共摘了多少个桃子?

4、 设计思路(实现原理)

1)编写一个函数peach($n),每次都判断一下$n 是否等于1,如等于1,则返回1;如不相等,则

$n -1 ,再调用自身peach(),并传递$n-1的结果。

二、案例实现

1、peach()函数,代码如下

function peach($n) { }

echo peach(2), '
'; echo peach(3), '
'; echo peach(9), '
'; echo peach(10), '
';

if($n == 1){ }

return 2*(peach($n - 1) + 1);

return 1;

运行程序,结果如下图所示:

9

博学谷——让IT教学更简单,让IT学习更有效

三、案例总结

1、递归函数必须要有结束的条件,否则就是死循环。 2、一定要找到合适的递归条件。

3、递归函数的运算量很大,所以要谨慎使用。

案例3-7 explode()函数 一、案例描述

1、 考核知识点

explode()函数

2、 练习目标

? 熟练explode()函数的用法

3、 需求分析

PHP提供的内置的字符串函数,功能非常的强大,很容易的就能实现我们想要的业务逻辑,减少我们编程的难度,其中explode()函数可以对字符串进行分割操作。

现在举例假设:字符串“open_door”转换成“OpenDoor”、“make_by_id”转换成“MakeById”。

4、 设计思路(实现原理)

1)编写一个函数change_str($str)。

2)将传递过来的$str字符串,转换成数组$arr。

3)把数组$arr中的每个元素的开头字符转换成大写,并放回数组$arr中。 4)把数组$arr转换成字符串返回。

二、案例实现

1、编写函数change_str,代码如下:

*@param $str string 要转换的字符串 *@return string 转换后的字符串 */

function change_str($str){

$arr = explode('_',$str);

$arr = array_map('ucfirst',$arr); return implode('',$arr); }

2、定义测试数据,代码如下:

//测试

$str1 = \

10