php函数

函数

完成指定任务的功能代码块

定义

 function  函数名( 参数1, 参数2...)
 {
 	函数体(语句)
 	return 返回值
 }
函数名( 参数1, 参数2...);

作用

给一段代码起一个**名字, 以后写名字** , 代码就会执行. 即调用.

通过**名字** , 可以多次调用.

特点

  1. 变量要先定义赋值才可以输出, 但函数的定义和调用不分先后顺序的 函数的定义代码, 会被提前放到内存.

  2. 函数定义了, 不调用就不执行.

  3. 函数名不区分大小写. 但推荐要一致.

变量作用域(范围)

由于函数的出现,导致变量的能见度(生命周期)不同. 共划分为:全局变量、局部变量、 静态变量:

1). 全局变量: 在函数定义变量,

作用域 : 在整个php文件中都可以被使用的变量.

<?php
	//变量的作用域:全局变量

	$a=10;//定义一个变量a值为10
	$b=20;
	//定义一个函数
	function fun()
    {
		global $a; //尝试使用外部的全局变量a
		echo $a; //输出变量a的值10
		echo $b; //输出变量b的值,结果没有(因为没有使用global)
		$a=100;
	}
	fun(); //调用函数fun

	echo $a; //100

2). 局部变量: 在函数定义变量

作用域 : 只能在函数内部使用. 可以使用return 将值返回, 函数结束时, 会被自动销毁

<?php
	//变量的作用域:局部变量

	//定义一个函数
	function fun()
	{
		$a=100;	//函数内定义变量
		echo $a; //将变量a的值返回
	}
	fun(); //调用函数fun

	echo $a; //没有输出,在函数内定义的变量,在函数外是无法使用的

3). 静态变量: 在函数使用 static 定义变量

作用域 : 只能在函数内部使用. 函数结束时, 不被销毁. 函数下一次执行时还可以使用.

<?php
    function fun()
    {
        static $i=1; //在当前脚本中连续多次调用本函数,i依然有效,里面的静态声明(初始化)只会调用一次。
        $i++;
        echo $i."<br/>";
    }
    fun();  //2
    fun();  //3
    fun();  //4

函数的参数

1). 值传递(普通传值)

<?php
    //假设函数的功能是求任意两个数的和.   如果求 4 与 7 的和. 这两个数就叫参数.
	
  	function xxoo($a, $b)              // 小括号中称为  参数列表
    {
       echo '两个数的和是: '.($a+$b);
    }

    xxoo(4, 7);    

    /*
    	 4,  7  是实际参数
    	$a, $b  是形式参数
    	
    	函数调用时, 会把实参赋值给形参  $a = 4      $b = 7
    */

?>

2). 默认参数值

可以在定义函数时,将部分参数提前附上初始值,当被调用时没有给这参数传值,就会采用默认值,以保障函数正常使用. 要求默认值从参数的右边开始。

<?php
	
  	function xxoo($a, $b)
    {
       echo '两个数的和是: '.($a+$b);
    }
    
    xxoo( );   // 调用函数时, 没有实际参数,会报错

?>
<?php
	
  	function xxoo($a = 3, $b = 8)      // 设置默认值
    {
       echo '两个数的和是: '.($a+$b);
    }
    
    xxoo( );     // 调用函数时, 没有实际参数, $a就是3, $b就是8 

    xxoo(2, 4);  // 调用函数时, $a=2  $b=4

	xxoo( 7 );   // 调用函数时, $a=7  $b为默认值8

?>

3). 引用方式传递(引用传值)

使用&符来实现引用传递,就是将参数直接给函数使用。(起别名)

假如函数内容发生改变,会使当前参数也发生改变。

实参形参 建立引用关系

注意: 调用引用参数(实参)时,必须使用变量,不可以直接用值, 否则不能建立引用关系

<?php

  	function xxoo( &$a )
    {
        $a++;
    }

	$x = 5;
    xxoo( $x );  // 相当于  $a = &$x;   函数操作$a, 就是操作了$x

    echo $x;     // 6

?>

4). 可变长度参数列表

func_get_args() //以数组的方式返回所有的参数信息
func_get_arg($index) //获取指定参数位置(index:从0开始的整数)的信息
func_num_args() //获取参数的个数

<?php
//可变长度参数列表
function dosum()
{
	//echo "参数的个数:".func_num_args()."<br/>";
	//echo "某个参数的值:".func_get_arg(4)."<br/>";
	$sum=0;
	for($i=0;$i<func_num_args();$i++){
		echo func_get_arg($i)." ";
		$sum+=func_get_arg($i);
	}
	echo "<br/>";
	echo "共计:".$sum;
}
dosum(10,20,50,60,300,100,20);

函数的返回值

​ 1) return 后面可以是任何类型的值

​ 2) 不写return, 或者只写return, 函数的返回值为 null

​ 3) return 下面的语句不会被执行. 因为return 的意思是函数结束, 并且返回到调用这个函数的位置.

函数调用

函数执行后, 总是返回到之前调用它的地方. 多个函数互相调用时, 代码的执行顺序如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IN6CkAxu-1598694741238)(images\function.png)]

变量函数

函数名 是个变量, 调用函数使用的不是直接的函数名,而是一个变量

<?php
  
  	function xxoo()
    {
      	echo 'aaaaa';
    }

    $x = 'xxoo';
    $x();         // 相当于调用了 xxoo()

?>

匿名函数

也叫闭包函数 允许指定一个没有名称的函数。通常把函数定义代码赋值给一个变量,通过变量来调用

<?php
  	$x = function(){  
    		echo 'aaaaa';  
		};
    $x();         // 相当于调用了 xxoo()

	//利用匿名函数获取全局变量值
	$a = 100;
	$z = function() use ($a){
      	echo $a;   // 100  
    };
	$z()

?>

回调函数

指调用函数的时候将另一个函数作为参数传递到调用的函数中,而不是传递一个普通的变量作为参数

使用回调函数是为了可以将一段自己定义的功能传到函数内部使用

<?php
  
  	function xxoo()
    {
      	echo 'aaaaa';
    }

    function base($x)
    {
        $x();
    }

    base('xxoo');    // $x='xxoo';  $x() => xxoo()

    base(function(){ echo 'bbbbb'; }); // $x=函数定义  $x()

?>

递归函数

函数内部可以调用其它函数. 递归函数可以看成 函数在内部调用自己.

函数自己调用自己, 会造成死循环. 必须满足某些条件后, 使它不会调用自己.

一般, 当参数满足某个条件时,就不调用自己

<?php
    /* 该函数只作说明, 没有实际意义 */
  	function xxoo( $n )
    {
      	 if ($n > 1) {          // 当参数大于1时, 调用自己
             xxoo( $n-1 );
      	 } else {               // 当参数不大于1时, 直接返回
             return;
      	 }
    }
	xxoo( 5 )
?>

<?php
//递归累加
function sum( $m )
{
	if($m==1){
		return 1;
	}
	return $m+sum($m-1); 						
}
sum( 10 );

引入文件

把自定义的函数放入一个文件中. 然后把文件加载进来. 就可以使用那些函数了.

include 加载文件, 如果有错, 之后的代码依然会执行

include_once 加载文件, 多次书写只会加载一次, 从而避免了重复加载而报错.

<?php
	include '文件名'; 

	include_once('文件名');   
?>

require 加载文件, 如果有错, 程序结束, 后面的代码不会执行

require_once 加载文件, 多次书写只会加载一次, 如果报错, 就不会往后执行

<?php
	require '文件名';   

	require_once('文件名');
?>

不推荐用 include_once 和 require_once , 其检查重复功能会耗费资源.

include和require后面加不加括号对执行结果没有区别,但是加上括号效率较低,所以后面能不加括号就不加括号

include 和 require的区别

<?php
	include '不存在的文件名';
	require '不存在的文件名';  

	echo 'hello world';

	/*
		require 和 include 几乎完全一样,除了处理失败的方式不同之外。
			
		include 引入不存在文件时产生一个Warning 脚本会继续往下执行  (适合导入不重要的文件)
		require 引入不存在文件时产生一个Fatal Error 脚本不会继续往下执行  (适合导入重要文件)
	*/

?>

如何认识系统函数

  1. 功能 要了解本函数的实现功能

  2. 参数 调用函数需要哪些参数(可选和必选)以及类型 注意 参数是否为引用方式 &

  3. 返回值 本函数都有什么返回结果

格式:

bool settype ( mixed &$var , string $type )

伪类型:

mixed,说明一个参数可以接受多种不同的类型。

number,说明一个参数可以是整型或浮点型。 

callback,说明参数是一个回调函数。  array_reduce() 

void,如果作为返回类型,意味着函数的返回值是没有用的。作为参数列表中的内容意味着不接受任何参数



字符串函数


strlen( ) 获取字符串的字节数

mb_strlen( ) 获取字符串的字符数

str_replace( ) 替换字符串

file_get_contents( ) 读取文件中的内容

file_put_contents( ) 写入文件中的内容

trim( ) 函数移除字符串两侧的空白字符或其他预定义字符

htmlspecialchars( ) 把一些预定义的字符转换为 HTML 实体

htmlspecialchars_decode( ) 将特殊的 HTML 实体转换回普通字符

md5( ) 计算字符串的 MD5 散列

password_hash( ) 创建密码的散列

password_verify( ) 验证密码是否和散列值匹配

strrev( ) 反转字符串

substr( ) 返回字符串的一部分

str_repeat( ) 把字符串重复指定的次数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值