变量的作用域问题和常用系统内部函数-php
1、1.变量的作用域问题
作用域,就是一个变量的“有效”(可用)的范围;
有3种作用域,也分别对应3种不同作用域的变量:
1, 局部作用域,局部变量:
其实就是指一个函数的内部;
局部作用域有“多个”,因为每个函数内部都是一个局部作用域;
局部变量:就是在一个局部作用于中定义的变量。它只能在该局部作用域中使用。
2,全局作用域,全局变量:
其实就是指函数的外部;
全局作用域,只有“一个”,即全局作用域就是那些所有不在函数内部的区域范围;
全局变量:就是在函数外部定义的变量;
特别注意:php中,全局作用域,和局部作用域,是“分离”的,“没有重叠”的,“泾渭分明”的;
3,超全局作用域,超全局变量:
其实就是指“所有区域”——类似js中的全局;
即:所有函数的内部和外部,合在一起,称为“超全局”。
超全局变量:只有那几个系统变量($_POST, $_GET, $_SERVER等 ) 是超全局变量,我们不能自己定义出超全局变量;
图示如下:

2、2.代码演示:

3、3.常用系统内部函数
跟函数有关的函数
function_exists(“函数名”):判断一个函数是否已经存在;
func_get_arg( $n ):在函数内部获得第n个实参(n从0开始算起)
func_get_args():在函数内部获得所有实参
func_num_args():在函数内部获得实参个数
字符串有关常用函数:
输出与格式化:echo , print, printf, print_r, var_dump.
字符串去除与填充:trim, ltrim, rtrim, str_pad
字符串连接与分割:implode, join, explode, str_split
字符串截取:substr, strchr, strrchr,
字符串替换:str_replace, substr_replace
字符串长度与位置: strlen, strpos, strrpos,
字符转换:strtolower, strtoupper, lcfirst, ucfirst, ucwords
特殊字符处理:nl2br, addslashes, htmlspecialchars, htmlspecialchars_decode,
常用数学函数
max, min, round, ceil, floor, abs, sqrt, pow, round, rand
$v1 = rand(10, 17); //获得10~17之间的随机整数!
常用时间函数
time:获得当前时间(精确到秒)
microtime:获得当前时间(可以精确到微秒)
mktime:创建一个时间数据
date:将一个时间转换为某种字符串形式
idate:取得一个时间的某个单项数据值,比如idate(“Y”)取得年份数
strtotime:将一个字符串“转换”为时间值;
date_add:将一个时间进行“加减”时间单位,比如“今天的100天之后是那一天”;
date_diff:计算2个时间之间的“差”;
date_default_timezone_set:在代码中设置“时区”
date_default_timezone_get:在代码中获取“时区”
有关编程思想
递归思想
一句话概括:
在一个函数内部的语句中,如果出现调用该函数本身的语句,则此时就称为“递归调用”;
递归原理:

4、4.递归应用:
使用递归,来求“n的阶乘”:
阶乘的数学规定:
1,任何一个正整数的阶乘,是这个正整数乘以比他小1的整数的阶乘的乘积;
即:n的阶乘 = n * (n-1)的阶乘;
2, 1的阶乘是1;
需求:求5的阶乘:

5、5.递归函数(递归调用,递归思想)的代码模式为:
function 函数名( $ n ){
if($n是某种特殊值){
return 特殊结果;
}
else{
$result = 对 函数名( $n-1 )的一个计算结果
return $result;
}
}
原理图示:

6、6.递推思想
描述:
如果要求得一个大问题(n级问题)的结果,且如果已知如下2个条件:
1,已知n-1级问题,可以轻松求得n级问题的答案;
2,该大问题的同类问题的最小一级的答案是已知的;
则我们可以简单使用递推模型(思想)来得到答案,如下所示:
$WENTI1 = 已知; //$WENTI1表示1级问题(最小一级)问题的答案;
$WENTI2 = 对 $WENTI 计算;
$WENTI3 = 对 $WENT2 计算;
。。。。。。
$WENTI(n) = 对 $WENTI(n-1) 计算;
递推思想应用:
计算5的阶乘:

7、7.代码模式:
$qian = 已知问题的最小答案;
for( $i = 第2级; $i <= 最大级n; ++$i){
$result = 对$qian做简单运算;
$qian = $result; //将当前求得的结果($result)当做下一次要求的结果的“前一个数”;
}
echo “结果为:” . $result;
图示如下:

8、8.使用递推解决斐波那契数列问题:
斐波那契数列:1, 1, 2, 3, 5, 8,13, 21, 34,.....
规律:
第n个数,是第n-1和第n-2个数的和,
其中:第1个是1,第2个也是1;
