一、函数定义及语法:

函数:对一段功能(类似或重复的功能)进行“打包”,然后以上的功能可以反复利用,提升程序实行的效率,这个打包的整体称为函数(function)。
方法 method

语法:

php学习顺序口诀php新手进修自界说函数 Node.js

function 函数名(){

//语句块

}

调用:

函数名();

<?php

//定义一个函数

function TestFunction(){

echo \"大众我是测试函数\"大众;

}

//调用

TestFunction();

//反复调用

TestFunction();

//在PHP中函数不区分大小写

testFunction();

?>

TIPS:

1、在PHP中函数名不区分大小写,建议区分;

2、函数可以在任何位置定义,建议是在调用前定义。

二、函数和文件引用的关系

单独定义的函数可以以.php、.inc(include,会有安全型隐患,不推举利用)等办法保存,再通过文件引用调用。

可以定义文件名为 xxx.inc.php 方便利用而且专业~0~。

三、带参数的函数

<?php

//带参数的函数

function Test1($t1,$t2){

echo \"大众输入的第一个数:\公众.$t1.\"大众<br>\"大众;

echo \"大众输入的第二个数:\公众.$t2.\"大众<br>\"大众;

echo \"大众和为:\"大众;

echo $t1+$t2;

echo \公众<br>\"大众;

}

//调用时参数个数、顺序、数据类型都不能随意(要保持同等)

Test1(1,1);

Test1(2,3);

Test1(3,2);

?>

四、带返回值的函数

函数有个运算结果,这个结果可以用于后续的运算,那么这个函数必须要有返回值。

<?php

//带返回值的函数

function Test1($t1,$t2){

return $t1+$t2;

}

echo Test1(3,4);

$result2=Test1(2,3);

echo $result2;

?>

TIPS:

1、一个函数最多只有一个返回值;

2、return后面的语句不可达。

<?php

//带返回值的函数

function Test1($t1,$t2){

if($t1+$t2>0)

return $t1+$t2;

return 0;

}

echo Test1(3,4);

echo Test1(2,3);

echo Test1(2,-3);

?>

五、传值与传地址(在函数中通过参数操作全局变量)

<?php

$t1=1;

function Test($t1){//参数也是局部变量

$t1=2;

echo $t1;

}

echo $t1;

Test($t1);//传值

echo $t1;

function Test1(&$t1){//传地址

$t1=3;

echo $t1;

}

Test1($t1);

echo $t1;

?>

六、变量浸染域(area):也叫生命周期(lifetime),便是变量起浸染的范围。
按照变量的浸染域变量可以分为:

局部变量:在对应函数中定义叫做该函数的局部变量,只在函数调用时生效,定义和调用结束都不生效。

全局变量:所有函数之外的变量。

<?php

$t1=1;//全局变量

function Test1(){

$t1=2;

echo \公众我是test1函数的局部变量$t1\公众;

}

function Test2(){

echo \公众我是test2函数的局部变量$t1\"大众;

}

echo $t1;//全局变量

Test1();

echo $t1;//全局变量

Test2();

?>

想要在函数中直接操作全局变量,可以利用global声明

<?php

$t1=1;//全局变量

function Test1(){

global $t1;//声明该变量便是全局变量,但是不能赋值

$t1=2;

echo $t1;

}

echo $t1;//全局变量

Test1();

echo $t1;//全局变量

?>

或者通过超全局变量$GLOBALS[“全局变量名修正”]

<?php

$t1=1;//全局变量

function Test1(){

$GLOBALS[\公众t1\"大众]=2;//超全局变量,直接操作全局变量

echo $t1;//局部变量

}

echo $t1;//全局变量

Test1();

echo $t1;//全局变量

?>

TIPS:推举多利用局部变量。
避免重复,还能提升效率!


七、带默认值的函数

在PHP中不得存在同名的函数,希望一个函数功能可以连续扩展

<?php

//带默认值

function Test1($defaulttmp=1){

echo $defaulttmp;

}

//function Test1(){}

Test1();

Test1(2);

?>

在例如:

<?php

//带默认值

function Test1($defaulttmp=1,$tmp){

echo $defaulttmp;

}

//调用

//Test1(,2);//缺点

Test1(3,4);

function Test2($t1,$t2=2){

echo $t1;

}

Test2(1);

//Test2(1,);//缺点

Test2(1,3);

?>

作业:

1、改写乘法口诀表

1)用户输入值小于即是0给出错误提示;

2)用户输入值大于9给出错误提示;

3)用户输入一个整数值,显示乘到该值的结果。

<?php

//实现乘法口诀表 $row显示的行数

function ChengFa($row){

switch(gettype($row)){//获取用户输入值的数据类型

case \"大众string\"大众:die(\"大众输入的值是字符串\公众);break;

case \"大众double\"大众:echo \公众输入的小数\"大众;return;break;

case \公众boolean\"大众:die(\公众输入的是布尔类型\"大众);break;

}

if($row<=0 || $row>9)

{

echo \"大众输入的数值不在合理范围内\公众;

return;

}

for($i=1;$i<=$row;$i++){

for($j=1;$j<=$i;$j++){

if($row==$i)

echo $j.\"大众\公众.$i.\公众=\公众.$j$i.\"大众 \公众;

}

echo \公众<br>\"大众;

}

}

ChengFa(9);

?>

2、数组排序改写

1)输入任何数组都可以完成排序;

2)排序可以掌握升序还是降序;

3)默认为升序。

<?php

$arr=array(5,4,6,7,3,2);

/

Describe:数组排序

Paramters:$arr 须要排序的数组

$isAsc 升序/降序 true为升序,false为降序

默认升序

/

function SortArray($arr,$isAsc=true){

echo \"大众排序前数组:\"大众;

foreach($arr as $v){

echo $v.\"大众 \"大众;

}

for($i=0;$i<count($arr);$i++){

for($j=0;$j<count($arr)-1-$i;$j++){

if($isAsc){

//升序

if($arr[$j]>$arr[$j+1]){

$tmp=$arr[$j];

$arr[$j]=$arr[$j+1];

$arr[$j+1]=$tmp;

}

}

elseif(!$isASC){

//降序

if($arr[$j]<$arr[$j+1]){

$tmp=$arr[$j];

$arr[$j]=$arr[$j+1];

$arr[$j+1]=$tmp;

}

}

}

}

echo \公众<br>排序后数组:\公众;

foreach($arr as $v){

echo $v.\"大众 \"大众;

}

}

SortArray($arr);

SortArray($arr,false);

?>

3、何氏三角改写:

1)输入任何整数显示对应行的结果;

2)小于即是0给出错误提示。

4、人为考勤

1)员工默认基本月人为为1280元

2)满勤奖为30天300元乘以百分比

3)出勤率>=90%~100% 全额发放满勤奖

4)出勤率>=80%~<90% 满勤奖90%发放

5)出勤率70%~80% 满勤奖为50%

6)出勤率低于70% 人为扣款为考勤缺勤比例

7)分别打算“张三”出勤率85%、“李四”出勤率60%的月人为(忽略其他奖金等计酬~0~)。

<?php

function GetMoney($name,$existsper){

$balary=1280;

$base=300;

if($existsper>=0.9)

$base=$base100/100;

elseif($existsper>=0.8 && $existsper<0.9)

$base=$base0.9;

elseif($existsper>=0.7 && $existsper<0.8)

$base=$base0.5;

elseif($existsper<0.7)

$base=-(1-$existsper)$balary;

echo \"大众【\"大众.$name.\公众】人为:\公众.($balary+$base).\公众<br>\"大众;

}

GetMoney(\"大众张三\"大众,0.85);

GetMoney(\"大众李四\"大众,0.6);

?>