1.php函数
1.用户自定义函数
function 函数名字([$parameter,[,…]])
{
//函数代码
}
注意:函数名不能与系统函数或用户已经定义的函数重名。
$parameter为函数参数,函数一般可以有0个或多个参数,
<?php function func($a,$b) { if($a==$b) echo "a=b"; else if($a>$b) echo "a>b"; else echo "a<b"; } ?> 2.参数的传递
参数是通过值来传递的,例如前面定义func()函数是通过变量$a和$b的值传递的。通过值传递参数不会因为函数内部参数值的变化而改变函数外部的值。
如果希望通过函数修改外部传来的参数值 ,可以使用引用参数传递,只要在定义函数时在参数前面加上”&”.
<?php function color(&$col) //定义函数color() { $col="yellow"; } $blue="blue"; color($blue); //调用函数color(),参数使用变量$blue echo $blue; //输出"yellow" ?>
3.函数变量的作用域
在主程序定义的变量和在函数中定义的变量都是局部变量。在函数中定义的变量只能在函数内部使用。在主程序中定义的变量
只能在主程序中使用,而不能在函数中使用。
<?php function sum() { $count=2; } sum(); echo $count; ?>
由于函数中的变量无法作用于函数外部,所以上面运行时出错,提示$count变量未定义。
4.函数的返回值
函数声明时,在函数代码中使用return 语句可以立即结束函数的运行,程序返回到时调用该函数的下一条语句。
<?php function my_function($a=1) { echo $a; return; //结束函数的运行,下面的语句将不被运行 $a++; echo $a; } my_function(); //输出1 ?>
中断函数并不是return语句常用的功能,许多函数使用return语句返回一个值来与调用它们的代码进行交互。函数的返回值可以是任何类型,包括列表对象
5.函数的调用
在函数声明后可以被调用了,另外函数如果没有返回值,调用进使用函数名即可。如果函数具有返回值,则可以将函数的返回值赋给一个变量。
//对一个数组进行升序排序的函数my_sort() function my_sort($array) { for($i=0;$i<count($array);$i++) { for($j=$i+1;$j<count($array);$j++) { if($array[$i]>$array[$j]) { $tmp=$array[$j]; $array[$j]=$array[$i]; $array[$i]=$tmp; } } } return $array; } $arr=array(6,4,7,5,9,2); //未排序的数组 $sort_arr=my_sort($arr); //将排序后的数组赋给$sort_arr foreach($sort_arr as $num) echo $num; //输出245679 ?> 6.递归函数
php支持递归函数,递归函数就是自己调用自已,可以实现循环的作用。
求10!
例如: <?php function factorial($n) { if($n==0) return 1; //如果$n为0则返回1 else return $n*factorial($n1); //递归调用,直到$n等于0为止 } echo factorial(10); //输出3628800 ?> 使用递归一事实上要给出递归终止条件,否则函数将一直执行下去直到内存耗尽,或达到最大调用次数。
7.变量函数
php有函数变量这个概念,在变量的后面加上一对小括号就构成一个变量函数。
$count();
8.系统函数
9.实例-设计一个计算器程序
<html> <head> <title>计算器程序</title> </head> <body> <form method=post> <table> <tr><td><input type="text" size="4" name="number1"> <select name="caculate"> <option value="+">+ <option value="-">- <option value="*">* <option value="/">/ </select> <input type="text" size="4" name="number2"> <input type="submit" name="ok" value="计算"> </td> </tr> </table> </form> </body> </html> <?php function cac($a, $b, $caculate) //定义cac函数,用于计算两个数的结果 { if($caculate=="+") //如果为加法则相加 return $a+$b; if($caculate=="-") //如果为减法则相减 return $a-$b; if($caculate=="*") //如果为乘法则返回乘积 return $a*$b; if($caculate=="/") { if($b=="0") //判断除数是否为0 echo "除数不能等于0"; else return $a/$b; //除数不为0则相除 } } if(isset($_POST['ok'])) { $number1=$_POST['number1']; //得到数1 $number2=$_POST['number2']; //得到数2 $caculate=$_POST['caculate']; //得到运算的动作 //调用is_numeric()函数判断接收到的字符串是否为数字 if(is_numeric($number1)&&is_numeric($number2)) { //调用cac函数计算结果 $answer=cac($number1,$number2,$caculate); echo "<script>alert('".$number1.$caculate.$number2."=".$answer."')</script>"; } else echo "<script>alert('输入的不是数字!')</script>"; } ?>
扩充练习:
1.函数int factors(int a[],int k)的功能是判断整数n(n>=2)是否为完数,如果是完数,返回0,否则返回1
所谓完数,是指整数n的所有因子(不包括n)之和等于n自身。例如,28的因子为1,2,4,7,14而28=1+2+4+7+14,因此28是完数。
2.函数int maxint(int a[],int k)的功能是用递归方法求指定数组中前K个元素的最大值,并作为函数值返回。
3.函数void printd(int n)的功能是将整数n 转换为字符串并输出。转换折方法是低位到高位依次取得整数n的各位数值,将其转换成数字字符后存入字符数组s中,
然后输出。
4。函数void revstr(char *s)将字符串s逆置。例如,"abcde”经过逆置后变为”edcba”
5. 函数change(int num)的功能是对4位以内(含4位)的十进制正整数num进行如下的变换:将num的每一位数字重复一次,并返回变换结果。例如,若num=5234,则函数
的返回值 55223344变换过程o (4*10+4)+(3*10+3)100+(2*10+2)*10000+(5*10+5)*100000=55223344
6. 本程序从键盘输入n(0<n<100)个整数,计算并输出其中出现次数最大且数值最大的元素及其出现次数。
7. 求两个数的最大公约数和最小公倍数
8。输入一个十六进制数,输出10进制数
9。给定一个二维数组(3*3)转置
10.将一个整数转换为字符串