PHP基础之函数
函数概念:
函数是用来完成某种特定任务的可重用代码块;
函数可以使程序更具模块化,拥有良好的结构;
函数定义后在程序中可以重复调用;
函数分为内置函数和自定义函数
考点:
变量的作用域和静态变量
延伸1,函数的参数及参数的引用传递。
延伸2,函数的返回值及引用返回。
延伸3,外部文件的导入。
延伸4,系统内置函数。
1.变量的作用域
变量的作用域也称变量的范围,变量的范围即它定义的上下文背景(也是它的生效范围)。大部分的PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件。
<?php
$c = 5;//全局变量
function get_count()
{
$c;//局部变量$c=null;
return $c;
}
echo $c;//5
echo get_count();//null
global关键字
<?php
$c = 5;//全局变量
function get_count()
{
global $c;//全局变量$c=5;
$GLOBALS['c'];//超全局变量,可以直接拿来用。
return $c;
}
echo $c;//5
echo get_count();//5
2.静态变量static
静态变量仅在局部函数域中存在,但当程序执行离开此作用时,其值并不会消失。
特点:1.仅初始化一次。2.初始化时需要赋值。3.每次执行函数该值会保留。4.static修饰的变量是局部的,仅在函数内部有效。5.可以记录函数的调用次数,从而可以在某些条件下终止递归。
function myFunc()
{
static $a = 1;//静态变量初始化
$a++;
return $a;
}
myFunc();//2
myFunc();//3
延伸1,函数的参数及参数的引用传递。
默认情况下,函数参数通过值传递。
如果希望允许函数修改它的值,必须通过引用传递参数。
$a = 1;
function myFun($a){//值传递
$a = 2;
}
myFun($a);
echo $a;//1
$a = 1;
function myFun(&$a){//引用传递
$a = 2;
}
myFun($a);
echo $a;//2
延伸2,函数的返回值及引用返回。
只通过使用可选的返回语句(return)返回。
可以返回包括数组和对象的任意类型。
返回语句中止函数执行,将控制权教会函数调用处。
省略return,返回值为null,不可以有多个返回值。
引用返回定义:从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符&。
function &mgFUNC()
{
static $b = 10;
return $b;
}
$a = mgFunc();//10
$a = &mgFunc();//引用
$a = 100;
echo mgFunc();//100
延伸3,外部文件的导入。
include/require语句包含并运行指定文件。
如果给出路径名按照路经来找,否则从include_path中查找;如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找。
当一个文件被包含时,其中所包含的代码继承了include所在行的变范围。
区别:
1,加在过程中未找到文件则include结构会发出一条警告;这一点和require不同,后者会翻出一个致命错误;require在出错时产生E_COMPILE_ERROR级别的错误。换句话说将导致脚本中止而include只产生警告(E_WARNING)。
2,require(include)/require_one(include_one)唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。
延伸4,系统内置函数
1.时间日期函数
date()\strtotime()\mktime()\time()\microtime()\date_default_timezone_set().
2.打印处理
print()(语句)\printf()\print_r()\echo(语句)\sprintf()\var_dump()\var_export().
3.序列化及反序列化函数
serialize()\unserialize()
4.字符串处理函数
implode()\explode()\join()\strrev()\trim()\ltrim()\rtrim()\stratr()\number_format()...
5.数组处理函数
array_keys()\array_values()\array_diff()\array_intersect()\array_merge()\array_shift()\array_unshift()\array_pop()\array_push()\sort()等