资讯专栏INFORMATION COLUMN

PHP学习记录(函数)

XiNGRZ / 2231人阅读

摘要:函数变量局部变量局部动态变量变量只在函数内部执行,执行完毕则被销毁局部静态变量使用修饰,执行完毕不被销毁注函数内部定义的变量,为局部变量,函数外部不能访问。局部动态变量局部静态变量全局变量在函数外部定义的变量,称为全局变量。

函数

函数含义

函数:是实现特定功能的、可以重复执行的代码段;

函数名:从语法上讲,函数名中能有汉字,但在实际开发中不建议使用!

函数结构

function 函数名 () {
    //代码块
}

函数名定义规则

开头:[a-zA-Z_x7f-xff]

函数名:[a-zA-Z0-9_x7f-xff]

函数的首字母不能为数字、可以是汉子或者字母,函数中间可以使用数字

函数的返回值

和其他语言不同的是,PHP并没有在函数声明的时候显示函数是否有返回值,如果函数内部使用了return即表示有返回值,反之则表示没有返回值,返回类型可以为对象、数组、字符串等。

函数变量

//局部变量
//局部动态变量:变量只在函数内部执行,执行完毕则被销毁;
//局部静态变量:使用static修饰,执行完毕不被销毁;
//注:函数内部定义的变量,为局部变量,函数外部不能访问。
function func()
{
    $a = 3;  //局部动态变量
    static $b = 34;  //局部静态变量
}

//全局变量
//在函数外部定义的变量,称为全局变量。在函数内部使用全局变量的时候,不能和其他语言一样直接使用,有两种使用方法:
//(1)用global关键字进行声明后使用
$a = 3;
function func()
{
    global $a;
    echo $a;
}

//(2)使用超全局变量数组$GLOBALS直接访问
$a = 3;
function func()
{
    echo $GLOBALS["a"];
}

函数的参数

值传递和引用传递

//值传递:当一个变量的值赋予给另外一个变量的时候,改变其中一个变量的值,将不会影响到另外一个变量的值

//引用传递:新变量指向了原始变量,改动新的变量将影响到原始变量,反之亦然。(只有有名字的变量才能引用传递,比如表达式就不可以)
//注:在函数中传递参数的类型为对象时,即使不加&,也是引用传递,因为对象名对应的是该对象的引用地址。

$a = 4;
function func1($c)  //值传递
{
    $c = 7;
}
func1($a);
echo $a, "
";  //4,函数没有改变$a的值

function func2(&$d)  //引用传递
{
    $d = 7;
}
func2($a);
echo $a, "
";  //7,函数改变了$a的值

参数默认值

//如果$a和$b没有默认值,调用该函数的时候必须传值,否则会报错,如果有默认值,可以不传参数
function func($a = 3, $b = 5)
{
    echo "a的值为{$a}, b的值为{$b}
";
}
func();

可变参数列表

/*
 *在函数定义时,形参可以省略不写,在函数内部可以通过系统方法获取传递进行的参数数组。
 *func_num_args():传入函数实参的个数
 *func_get_args():传入函数实参列表(数组形式)
 *func_get_arg(index):传人函数具体位置的实参
 */

function fun6()
{
    echo func_num_args(), "
";  //3
    print_r(func_get_args());  //数组
    echo func_get_arg(0);  //10
}
fun6(10, 11, 12);

传参类型限定

//函数定义时,可以给参数限定类型,共三种类型:array,object,callback
function func(array $a)  //实参必须为数组类型
{
    print_r($a);
}
//func(1);  //会报错
func([1, 2, 3]);

复杂函数

可变函数

//将函数的名字赋值给变量,通过变量去调用函数,让函数的调用更具多样性
/*
 * is_callable(函数):判断函数能否被调用
 * function_exists(函数):判断函数是否存在
 */
function func()
{
    echo "hello, world", "
";
}

$fun = "func";

if (is_callable($fun)){  //判断是否能调用
    echo "能调用", "
";
    $fun();
}

if (function_exists($fun)){
    echo "能调用", "
";
    $fun();
}

函数的嵌套

/*                                                 
* php所有定义的函数,作用域都是全局的                             
*                                                 
* 和其他语言比如java相比,php不存在内置函数,意思就是说bar()不是foo()的内置函数, 
* 两者没有区别,作用域都是全局的,在bar()函数内不能调用foo()中声明的变量,但是bar()
* 函数必须在foo()调用之后才会被定义,才能被调用                       
*                                                 
*/                                                
function foo()                                     
{                                                  
$a = "hello, world";                           
function bar()                                 
{                                              
    /* 不能调用变量$a */                             
    echo "bar()函数被调用";                         
}                                              

/* 内部可以调用bar(),因为其已经被定义 */                                                  
//bar();                                         
}                                                  
                                                   
/* 现在不能调用bar(),因为其还没有被定义 */                        
                                                   
foo();                                             
                                                   
/* 现在可以调用bar(),因为foo()调用之后,bar()已经被定义 */           
                                                   
bar();                                             

递归调用:函数调用自己本身,递归里面需要有跳出递归的判断条件

匿名函数

/*                                  
 * 匿名函数                             
 * 函数没有指定名称,称为匿名函数                  
 * 通过将函数赋给变量,通过变量来实现调用函数                                            
 */                                 
$say = function($str) {             
    echo "hello, world";            
};                                  
$say("aaa");                        


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28737.html

相关文章

  • PHP学习记录(基础)

    摘要:最后改为超文本预处理器,于年诞生。注释单行注释多行注释你好单行注释你也好单行注释多行注释大家都好变量由一个美元符号后面跟变量名来表示变量名区分大小写。可变变量可变变量一个变量的变量名可以动态设置和使用。 PHP简介 最初用于维护个人主页,简写为:Personal HomePage。最后改为:Hypertext Preprocessor(超文本预处理器),于1994年诞生。 优势 性...

    crossoverJie 评论0 收藏0
  • PHP学习记录(日期函数

    摘要:时间戳不仅被使用在系统,类系统中,也在许多其他操作系统中被广泛应用。 日期时间函数 格式化日期 /* * date函数 * string date(string format[, int timestamp]) * 描述:格式化一个本地时间/日期 * * format格式: * Y:4位数字完整表示的年份 * y:2位数字表示的年份 * F:月份,完整的文本格式 * ...

    linkFly 评论0 收藏0
  • PHP学习记录(文件函数库)

    摘要:文件函数库文件目录函数库为核心函数库,可以通过其提供的完成对于文件及目录的常用操作。 文件函数库 文件、目录函数库为PHP核心函数库,可以通过其提供的API完成对于文件及目录的常用操作。 文件信息相关的API /* * 文件信息相关API * filetype(), filesize(), filectime(),filemtime(), fileatime() */ $dir...

    chavesgu 评论0 收藏0
  • PHP学习记录(数学函数库)

    摘要:数学函数库进一舍一取整,四舍五入函数描述将实现舍一取整函数描述将实现进一取整函数描述实现四舍五入的功能,表示保留几位小数幂运算和平方根函数描述幂指数运算函数描述平方根最大值和最小值函数描述返回最大值函数描述返回最小值最大值最小值随机数函数描 数学函数库 进一、舍一取整,四舍五入 /* * floor函数 * float floor(float $value) * 描述:将实现舍一...

    _DangJin 评论0 收藏0
  • PHP学习记录(字符串函数

    摘要:字符串常用函数获取字符串长度函数函数获取字符串或数字的长度王昭格式下,每个汉字个字节长大小写转换函数字符串所有的字母转换为小写字符串所有的字母转换为大写将字符串的首字母大写,其他字母不变将字符串中每个单词的首字母大写,其他字母不变字符串替换 字符串常用函数 获取字符串长度函数 /* * strlen函数 * int strlen($var) * 获取字符串或数字的长度 */ $a = ...

    张金宝 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<