PHP各种形式的函数以及应用

常规参数的函数

  • 常规参数的函数格式说明:
    • string example(string name,int age,double height)
  • 所谓的常规参数的函数,就是实参和形参应该个数相等、类型一致。就像 C 或 Java 等强类型型语言。
  • 上面函数有三个参数,调用时传递的参数个数和顺序必须一致。
  • 比如:
    • string chr(int $ascii),返回指定的字符
    • float ceil(float $value),进一法取整
    • array array_combine(array $keys,array $values),合并一个数组
    • string implode(string $glue,array $pieces)

伪类型参数的函数

  • 常规参数的函数格式说明:
    • mixed funName(mixed $a, number $b, callback $c)
  • PHP是弱类型语言,不仅在声明变量时不需要指定类型,当然在声明函数时也不需要指定类型,所以在PHP中函数的每个参数,都可以为其传递任意类型的值。
  • 三种伪类型: mixednumbercallback
  • 比如:
    • bool empty(mixed $var),检查一个变量是否为空
    • bool usort(array &$array,callback $cmp_function),自定义函数对数组排序
    • number abs(mixed $number),绝对值

引用参数的函数

  • 引用参数的函数格式说明:
    • void funName(array &args)
  • "&"修饰的参数是引用参数,会得到变量的地址,实际上就是把参数的地址传进来。如果在函数内部修改了参数,外部所对应的变量数据一样会被修改。
  • 相对于按值传递模式,并不会将父程序中的指定数值或目标变量传递给函数,而是把该数值或变量的内存储存区块相对地址导入函数之中。因此当该数值在函数中有任何变动时,会连带对父程序造成影响。
  • 注意:如果在函数的形参中使用“&“修饰的参数,在调用该函数时必须传入一个变量给这个参数,而是不能传递一个值。
<?php

// &$num 是一个内存的存储地址
function demo(&$num){
	return $num++;	// 先取值,后自加
}

// demo(10)	// 报错,只能传递一个变量,不能传递具体值
// 
$i = 10;
echo demo($i);	// 10
echo "<hr />";
echo $i;		// 11

默认参数的函数

  • 默认参数(“[]”中的)的函数格式说明:
    • mixed funName(string name [,string value [,int num]])
  • 在 PHP 中,支持函数的默认方式调用。如果在调用函数时没有指定参数的值,在函数中会使用参数的默认值
  • 注意:默认参数必须列在所有没有默认值参数的后面。

回调函数

  • 回调函数格式说明:
    • mixed funName(callback arg)
  • 所谓回调函数,就是指调用函数时并不是传递一个标准的变量作为参数,而是将另一函数作为参数传递到调用的函数中。
# 变量函数
<?php

// 通过可变变量调用函数,也相当于一种回调
// 函数名是可以放在变量里的,通过变量名调用
function one($i){
	if($i % 3 == 0) return true;
	return false;
}

function two($i){
	if($i % 4 == 0) return true;
	return false;
}

$result = "one";
var_dump($result(10));	//false;
var_dump($result(9));	//true;

<?php
# 使用变量函数声明和应用的回调函数

function one($num){
	if($num % 3 == 0) return true;
	return false;
}

//过滤回文数(11,22,33)
function two($num){	
	if($num == strrev($num)) return true;
	return false;
}

function filter($fun){
	for($i = 0; $i < 100; $i++){
		if($fun($i))	continue;
		
		echo $i;
		echo "<br />";
	}
}

filter("one");
filter("two");
<?php
# 借助`call_user_func_array()`函数自定义回调函数

function demo($msg1, $msg2){
	echo $msg1;
	echo "<hr />";
	echo $msg2;
}

// 比较少用
call_user_func_array("demo", ["信息1", "信息2"]);
上一篇:PHP 笔记——String 字符串


下一篇:MYSQL索引的类型和索引的方式