function demo(){
//查询传入的参数几个参数
// return func_get_arg();//返回2
//查看参数的值,数组
// print_r(func_get_args());//Array([0]=>1,[1]=>2);
// print_r(func_get_args()[0]);//1;
// print_r(func_get_args(1));//2;
//求数组之和
return array_sum(func_get_args());//3
}
demo(1,2);
//1.PHP7可变形参
function demo2($a,$b,...$c){
return $a+$b+array_sum($c);
}
var_dump(demo2(1,2,3,4,5));
function demo3(){
return array_sum(func_get_args());
}
$arr = [4,5];
var_dump(demo3(5,...$arr));
//2.PHP7新增
var_dump($_GET['user'] ?? 1);
// 等价于
var_dump(isset($_GET['user'])?$_GET['user']:1);
//3.参数类型限制
function demo4(int $a,...$b){
return $a+array_sum($b);
}
echo demo4(2.5,3,4,'10');//19 2.5忽略小数点后面数字
//4.php7限制返回类型
function demo5($a,$b):int
{
return $a+$b;
}
//注意这里是先执行函数再固定返回值
echo demo5(6.2,3.9);//返回10;
//5.常量的定义
define('NATION','中国');//函数
const COURSE = 'PHP';//声明
// define和const的其它区别:
// 1.const不能再条件语句中定义常量,但是define是可以的
// 2.const采用一个普通的常量名称,define可以采用表达式作为名称
// 3.const只能接受静态的标量,而define可以采用任何表达式。
// 4.const本身就是一个语言结构。而define是一个函数。所以使用const速度要快的多。
// 函数内访问外部变量 global
echo '
';
//6.数组排序函数
$arr = [1,9,6,6,10,3,2];
sort($arr);//成功返回true ,失败返回false,升序
rsort($arr);//降序
$arr_assoc = ['2'=>'11','1'=>22];
asort($arr_assoc);//以值升序
ksort($arr_assoc);//以键升序
arsort($arr_assoc);//以值降序
krsort($arr_assoc);//以键降序
usort($arr,function($a,$b){
// return $a-$b;//升序
return $b<=>$a;//降序
});
print_r($arr);
//7.函数引用外部变量
$str = 'php';
// $f1 = function() use($str){
// &引用地址
$fun = function() use(&$str){
$str = 'js';
return $str; //返回 'js';
};
$fun(); //返回 js
echo $str; //返回js
echo '
';
function sum($a,$b){
return $a+$b;
}
//回调方式调用函数
echo call_user_func("sum",6,8);//14
echo call_user_func_array("sum",[6,8]);//14
echo '
';
class A
{
public function func($a,$b)
{
return $a+$b;
}
public static function func1($a,$b)
{
return $a+$b;
}
}
//常规方式
echo (new A)->func(6,8)."
";//14
//回调方式
echo call_user_func_array([(new A),'func'],[6,8]);//14
//调用类中静态方法
echo call_user_func_array(['A','func1'],[6,8]);//14
总结:
1. func_get_args() 返回当前函数的实参数量
2.数组排列 sort($arr) 以值升序,rsort($arr)降序,asort()值升序,ksort()键升序,arsort()值降序,krsort()键降序
3.call_user_func($arr,param1,param2); 回调方式执行函数
4.call_user_func_array($arr,[param1,param2]);
4.1 执行类中动态方法 call_user_func_array([(new Class),'method_name'],[param1,param2]);
4.2 执行类中静态方法 call_user_func_array([('classname'),'method_name'],[param1,param2]);
5.函数引用外部变量 $func = function() use ($var_name){}
6.函数强制返回数据类型 $func = function() :int{}
7.常量的定义:define('VAR_NAME','value'); const VAR_NAME = value;
8. define/const 的区别:
1.const不能再条件语句中定义常量,但是define是可以的
2.const采用一个普通的常量名称,define可以采用表达式作为名称
3.const只能接受静态的标量,而define可以采用任何表达式。
4.const本身就是一个语言结构。而define是一个函数。所以使用const速度要快的多。
PHP7新学特性
1. $a??$b 的用法 等同于 isset($a)?isset($a):$b;
2. 可变形参 function demo($a,$b,..$c)//注意只能写 三个 . 传值时可传递多个实参
标签:function,arr,const,常量,define,func,return,php,定义
来源: https://www.cnblogs.com/baboben/p/12019914.html