0X01函数
函数的定义
//函数定义方法:
function 函数名()
{
函数体;
}
//函数的调用:
函数名();
基本格式:
- 函数定义都要以关键字function开始;
- 函数名后面要跟紧小括号;
- 小括号下面跟着大括号,大括号里面是函数体
函数名命名规范:
- 函数名不区分大小写;
- 函数名字使用英文,遵循规范;
- 数字可以加在中间或者是后面;
- 下划线不属于特殊符号;
- 不使用特殊符号;
- 命名要有含义,尽量值观体现函数的功能;
- 遵循驼峰或者下划线;
- 不能使用系统给咱们的函数名还有系统已有的关键字。
return
- 只要执行到return关键字就会立刻结束,后面的代码不会再继续执行;
- 如果需要有多个返回值时,可以使用数组来实现;
- 函数调用表达式的值就是函数的返回值;
函数使用注意事项
- 函数必须要以function开始定义;
- 函数名与变量名的命名规则基本一样,唯一不一样的是函数不区分大小写;
- 函数名后面跟括号,括号里面跟参数,也就是变量;
- 如果有默认参数,可以直接用“=”给变量赋值;
- 函数可以有返回值,也可以没有返回值,可以用return关键字返回值;
- 函数的调用和函数的定义顺序没有关系,可以在定义函数之前调用函数,而变量不行;
- 函数体外的变量和函数体内的变量通常不是一个变量;
- 函数可以反复多次调用。
内库函数
PHP 自带的一些功能函数,可以直接调用。
常用函数
数学函数
随机
rand 产生一个随机整数
mt_rand 生成一个更好的随机数
小数
floor 不大于该数的最大整数
ceil 不小于该数的最小整数
round 四舍五入法取证
其它
abs 绝对值
pi 圆周率
M_PI 常数,与pi()函数的返回值相同
pow 指数表达式
max 最大值
min 最小值
字符串常用函数
大小写转换
strtolower 转换为小写
strtoupper 转换为大写
lcfirst 首字母小写
ucfirst 首字母大写
ucwords 每个单词首字母大写
空白处理
trim 去掉首尾的空白字符
ltrim 去掉开头的空白字符
rtrim/chop 去掉结尾的空白字符
查找定位
strstr/strchr 返回首次出现到结尾的内容
strrchr 返回最后一次出现到结尾的内容
stristr 忽略大小写的版本
strpos 返回首次出现的位置
stripos strpos忽略大小写的版本
strrpos 返回最后一次出现的位置
strripos strrpos忽略大小写的版本
substr 字串提取,可以通过下标方式获取单个字符($str[n])
strpbrk 返回(字符列表中任意字符)首次出现到结尾的内容
比较
strcmp 二进制比较字符串
strcasecmp strcmp忽略大小写
strnatcmp 自然顺序比较
strnatcasecmp strnatcmp忽略大小写版本
顺序
str_shuffle 打乱顺序
strrev 逆序字符串
转换
chr 将ASCII码值转换为字符
数组常用函数
1、数组中元素指针的移动
next 向后移动,指向下一个元素
prev 向前移动,指向前一个元素
end 指向最后一个元素
reset 复位,重新指向第一个元素
2、键和值相关的操作
key 获取数组当前元素的键
current/pos 获取数组当前元素的值
array_keys 获取所有的键
array_values 获取所有的值,并为其建立数字索引
array_key_exists/key_exists 判断给定的键是否在数组中
in_array 判断给定的值是否在数组中
array_aearch 根据值返回对应的键名
array_count_values 统计数组中所有的值出现的次数
3、添加/删除元素
array_shift 将数组开头的元素移除数组
array_unshift 向数组开头添加一个或多个元素
array_push 向数组末尾加入一个或多个元素
array_pop 删除数组末尾的一个元素
4、排序
shuffle 将数组打乱(转换为索引数组)
sort 对数组进行排序(排序之后重新索引)
rsort 对数组进行逆向排序
asort 对数组进行排序并保持索引关系
arsort 对数组进行逆向排序并保持索引关系
natsort 用自然顺序算法对数组进行排序
natcasesort natsort忽略大小写的版本
ksort 对数组按照键名进行排序
krsort 对数组按照键名逆向排序
usort 使用用户自定义的比较函数对数组的值进行排序
uasort 使用用户自定义的比较函数对数组的值进行排序并保持缩影关系
usort 使用自定义的比较函数对数组的键名进行排序
5、元素运算
array_sum 计算数组中所有值的和
array_product 计算数组中所有值的乘机
count/sizeof 计算数组中元素的个数
6、创建数组
range 建立一个包含指定范围单元的数组(可以指定步幅,可以指定递减)
compact 创建一个包含变量与其值的数组
extract 从数组中将变量导入当前的符号表(与compact功能相反)
array 新建一个数组
array_merge 合并一个或多个数组(关联会覆盖,索引会重新索引,若想保留索引可以使用“+”)
array_merge_recursive 递归合并一个或多个数组
array_combine 用一个数组的值作为键名,另一个数组的值作为值创建数组
7、其他
array_chunk 将数组分割成指定长度的小数组
array_map 将回调函数作用到每个元素上,返回处理的结果数组(新数组)
array_walk 将回调函数作用到每个元素上(会改变原数组),返回真假
array_filter 使用回调函数过滤数组(回调函数返回真才会出现在结果中)
array_flip 返回交换键和值后的新数组
array_rand 随机从数组中抽取一个元素或多个元素的键
array_replace 使用后面的数组中元素替换第一个数组中的元素
array_reverse 返回一个单元顺序相反的数组(关联数组会保持键值对应,索引数组需要传递第二个参数)
array_unique 移出数组中重复的值
作用域
作用域是指一个变量作用的范围,或者叫做变量生命周期。
局部变量
在一个函数体内声明的变量,内部变量的作用域,只在函数体内生效,函数执行完后自动销毁(垃圾回收机制)。
外部变量
外部变量就是在函数体外声明的变量,不能在函数体内使用;
内部变量和外部变量的命名可以一样,但不建议这么做。
超全局变量
既能在函数内部使用,又能在函数体外使用的变量。即局部变量和外部变量是同一个。
$_GET
$_POST
$_FILE
$_COOKIE
$_SESSION
$GLOBALS
静态变量
funcation total()
{
static $num = 2;
$num *= 2;
echo $num;
}
total(); //第一次调用:4
total(); //第二次调用:8
total(); //第三次调用:16
...
这个变量只会初始化一次,在运行的事后他会记录上一次的值,static变量不会销毁,即静态变量。