码迷,mamicode.com
首页 > Web开发 > 详细

【php基础】函数/常量定义

时间:2019-12-11 00:11:53      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:方式   排序   cti   不能   动态   UNC   静态   限制   dem   

<?php


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 ‘<hr>‘;
//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 ‘<hr>‘;

 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 ‘<hr>‘;
 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)."<hr>";//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)//注意只能写 三个 .  传值时可传递多个实参

      

【php基础】函数/常量定义

标签:方式   排序   cti   不能   动态   UNC   静态   限制   dem   

原文地址:https://www.cnblogs.com/baboben/p/12019914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!