函数的嵌套调用与函数的高级应用

一,函数的嵌套调用

1,嵌套调用

函数的嵌套调用指的是在调用一个函数的过程中,调用另外一个函数,这种在函数内调用其他函数的方式称为嵌套调用。

function example($price,$tax){
	function examples($yuan,$taxs=7.5){
	return $yuan*$taxs;
	}
	$total=$price+($price*$tax);
	echo "价格是:$total 美元
"; echo "价格是:".examples($total)."元
"; } example(15.00,0.75); ?>

(运行结果:价格是:26.25 美元,价格是:196.875元)
举例:班主任老师要计算每个学生语文和数学平均分,其实现思路是首先编写一个函数用于计算学生的语文和数学的总分,然后再编写一个函数用于实现学生的平均分。

2,递归调用

递归调用是函数嵌套调用中一种特殊的调用。它指的是一个函数在其函数体内调用自身的过程,这种函数成为递归函数。

function arrContentReplact($array)
  {
  if(is_array($array))
  {
  foreach($array as $k => $v)
  {
  $array[$k] = arrContentReplact($array[$k]);
  }
  }else
  {
  $array = str_replace(
  array('<', '>'),
  array('{', '}'),
  $array
  );
  }
  return $array;
  }
  $arr = array(array("< 小刚>","< 小晓>",array("<小强>",array("<浪人>"))),"< 小飞>","< 小李>","< 小红>");
  $arr3 = arrContentReplact($arr);
  echo "
";
 
  print_r($arr3);

  echo "
";
 
  ?>

举例:求n的阶乘,计算公式为1×2×3×…×n。如4的阶乘等于1×2×3×4=24。

二,函数的高级应用

1,静态变量

//局部变量
function num()
{
    $i = 1;
    echo $i;
    ++$i;
}
//静态变量
function num()
{
    static $i = 1;
    echo $i;
    ++$i;
}

2,可变函数

可变函数的实现是在一个变量前添加一个“$”符号,就变成了另外一个变量。同理,可变函数的实现就是在一个变量名后添加一对圆括号“()”,让其变成一个函数的形式,然后PHP就寻找与变量值同名的函数,并且尝试执行它。

function echoString($str){
      echo($str);
  }
$varFun="echoString";
$varFun=("Output String");//输出"Output String

3,回调函数

回调函数(callback):指的就是具有callable类型的函数,一般用作参数的传递。如PHP内置函数call_user_func()可以接受用户自定义的回调函数作为参数。

function fnCallBack( $msg1 , $msg2 )
{
    echo 'msg1:'.$msg1;
    echo "
\n"; echo 'msg2:'.$msg2; } $fnName = "fnCallBack"; //方法名 $params = array( 'hello' , 'world' );//传给参数的值 call_user_func_array( $fnName , $params );

4,匿名函数

匿名函数:就是没有函数名称的函数,也称作闭包函数,经常用作回调函数参数的值。对于临时定义的函数,使用匿名函数无需考虑函数命名冲突的问题。

$sum = function($a, $b) {	// 定义匿名函数
    return $a + $b;
};
echo $sum(100, 200);	// 输出结果:300

匿名函数中使用外部的变量,需要通过use关键字实现。use关键字后圆括号“()”中的内容即为要使用的外部变量列表,多个变量之间使用英文逗号“,”分隔即可。

$c = 100;
$sum = function($a, $b) use($c) {
    return $a + $b + $c;
};
echo $sum(100, 200);  	// 输出结果:400

此之外,匿名函数还可以作为函数的参数传递,实现回调函数。

function calculate($a, $b, $func)
{
    return $func($a, $b);
}
echo calculate(100, 200, function($a, $b) { 	// 输出结果:300
    return $a + $b;
});
echo calculate(100, 200, function($a, $b) { 	// 输出结果:20000
    return $a * $b;
});

最后感谢大家的观看

在这里插入图片描述

你可能感兴趣的:(函数)