【知识点】自定义函数及内部函数

变量的作用域:
1、函数体外部定义的变量在内部无法直接访问,可以通过globle及$GLOBLE[‘xx’]的方式来访问
2、定义的变量可在include、reqiure的文件中访问;
3、globle不能改变外面变量的值,而$GLOBLE[‘xx’]可以改变;
静态变量:
1、仅初始化一次,以后再次调用的时候也不会在执行static这一行,初始化的时候需要赋值;
2、执行函数后该值会保留,下次执行函数的时候值还存在;
3、static修饰的变量是局部的,仅在函数内部有效;
函数参数:
1、函数的参数默认通过值传递;
2、如果要在函数中改变传递参数的值,需要改成引用传递;
函数的引用返回:
从函数返回一个引用,必须在函数声明和指派函数返回值给一个变量的时候都使用&符合
[code]
function &func(){
static $b=10;
return $b;
}
$a = func();//$a=10
$a = &func();//$a=10
$a = 100;//$b=100
[/code]
include与require的区别:
include的文件时找不到文件会产生一个警告,程序将继续执行;而require的文件找不到就会产生一个致命错误;
include_once与require_once都先检查文件是否被包含过,如果已经包含过就不会在包含了;
时间日期函数:
date()\strtotime()\mktime()\time()\microtime()\date_default_timezone_set();
IP处理函数:
ip2long()\long2ip()
打印处理
print()\printf()\print_r()\echo\sprintf()\var_dump()\var_export()
print-只能打印单个变量
echo-可以打印多个变量
printf-输出
sprintf-返回
print_r-不会打印出类型
var_dump-可以打印出类型
var_export-将数组格式化输出

序列化和反序列化函数
serialize()\unserialize()

字符串函数
implode()\explode()\join()\strrev()\trim()\ltrim()\rtrim()\strstr()\number_format()

数组函数
array_keys()\array_values()\array_diff()\array_intersect()\array_merge()\array_shift()\array_unshift()\array_pop()\array_push()\sort()