0925-0926 函数注意点

function 函数名 ([arg1][,arg2][,arg3]...[,arg4]) {

  代码段

  return 返回值;

}

函数可以没有返回值
也可以有一个返回值
不可能有多个(单独)返回值

函数名命名与变量,常量命名规范相同.
函数名不区分大小写,面向对象里, 方法(理解成函数),也不区分大小写.。
函数名必须是唯一的,即函数名不能和已经存在的函数重名。

声明函数时,的参数---> 叫形式上的参数, 形参
调用函数时,的参数---> 叫实际传递的参数,实参.
说白了:
形参在函数体内提供?? -->变量名
实参在函数体内提供?? -->值

如果实参少于形参,没对应上,warning警告,并尽量往下执行.

如果实参多于形参,后面多出来的实参,将会被舍弃掉. 没有其他副作用.

如果参数有默认值的话,要把该参数,写到最后面,若在前面,对应位置留空会报错

如果某个有默认值的形参,对应位置传了实参
那么,实参的值 将要覆盖 默认值.

作用域 js 会往外层找,php不会

当函数语句运行完之后,执行权就交回.
或者是碰到 return 之后,函数也会交回执行权.

没有return 或者 return; $s=xxx();echo $s; 结果null;

return不能返回多个单独的值。复合值除外。

/*
function t3() {
    return 3,9;  // 语法错误
}
*/

动态函数

即 函数的名字 可以用变量来表示.同样适合于类名

$func();

php中引用的用法:
1. 变量的引用赋值: $a = &$b
2. 函数调用时的引用参数传递
    1) 早期php是在调用时通过&符号传递引用类型的变量, 比如: func(&$arg);
    2) 后来, 函数的引用类型参数被规定为需要在函数声明时定义, 不如: function func(&$arg);
       注: 引用声明时定义引用类型参数后, 运行时引用参数传递被废弃, 需要在php.ini中增加allow_call_time_pass_reference来开启.
3. 函数返回引用类型, 这种应用方式需要声明函数时, 在函数名前增加&符号, 并且, 在调用时, 要用引用赋值方式, 比如:

function &func() {
    return $a;
}
$a = func();  //这种调用方式得到的不是引用传值
$a =& func(); //这样调用才是引用传值
$a = 1;
function &func(&$a) {
  return $a;
}
$b = func($a);
$c =& func($a);
$b = 2;
echo "a: $a, b: $b, c: $c. <br />/n";
//输出a: 1, b: 2, c: 1.
//可见对$b的修改不会影响$a
$c = 3;
echo "a: $a, b: $b, c: $c. <br />/n";
//输出a: 3, b: 2, c: 3.
//可见对$c的修改会影响$a

错误

$age = 19;

function foo($num)
{
    $num = &$age;  
    $num += 5;    
}

foo(1);
echo $age;

引用传参请用function foo(&$num)


超级全局变量:

$_GET     //地址栏传参的集合

$_POST   //post方式传递来的参数集合

$_COOKIE

$_REQUEST  // GET POST COOKIE的集合

$_FILES       //文件上传

$_ENV         //php服务器环境

$_SESSION   //用户登录

$GLOBALS   //全局变量的注册表,访客的一些信息 能找到声明过的所有页面变量

$_SERVER     //服务器参数

 global关键字,用在变量名前,声明:这个变量用的是"变局范围"内的$age 而不要在局部内生成$age

1: 通过引用传参,能影响全局变量
2: 通过global声明, 也能直接使用外部的变量 (不推荐,好多公司明确禁止使用global,自己想想危害)
3: 直接操作超级变局变量.

 bool function_exists(string function name)

 $GLOBALS['var1'] = 5; var1就 == 5了

我们通过$GLOBALS可以操作普通的全局变量.

原文地址:https://www.cnblogs.com/zy2012/p/3384297.html