1.php函数
1.用户自定义函数
function 函数名字([$parameter,[,…]]) { //函数代码 }
注意:函数名不能与系统函数或用户已经定义的函数重名。
$parameter为函数参数,函数一般可以有0个或多个参数,
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语句返回一个值来与调用它们的代码进行交互。<FONT color=#c0504d>函数的返回值可以是任何类型,包括列表对象</FONT>
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>"; } ?>