攒了一天才写,拖延症害死人==
php中允许先写调用函数,下面再写函数的定义(同Java) 形参 实参什么的也同C 但是函数名不区分大小写!!!
先介绍一个实用的,把用php写的字符串(本文中用的是一个表格,本质不也是字符串嘛)转存成html文档的函数:file_put_contents(),第一个参数写html文件名,第二个是个字符串
<meta charset="UTF-8">//这句话在PHP外面写!!! <?php error_reporting(0); echo table("用户表",10, 10, 2, 'red', 1, 800, 'left'); //实参 (实际的参数) file_put_contents("demo.html", table("成绩表", 50, 5, 3, 'green', 10, 400, 'right')); //声明函数时,提供的参数, 形参(形式上的参数) function table($tablename, $rows, $cols, $num, $color, $border, $width, $align){ $str .= '<table border="'.$border.'" width="'.$width.'" align="'.$align.'">'; $str .= '<caption><h1>'.$tablename.'</h1></caption>'; for($i=0; $i<$rows; $i++) {//一定记得是$i 不是i! $bg = ($i%$num==0) ? $color : ""; $str.= '<tr bgcolor="'.$bg.'">'; for($j=0; $j < $cols; $j++ ) { $str .= '<td>'.($i*10+$j).'</td>'; } $str .= '</tr>'; } $str .= '</table>'; return $str; echo "#################";//证实return之后的不执行……废话 }
分析一下代码都啥意思吧
函数参数果断忽略掉,没啥不会的,记得之前说过双引号有解析字符串的功能吧,所以所有被双引号(都是函数参数,变量)都被解析成对应的值啦
为啥成绩表:
长得和用户表不一样……参数不一样啊
再介绍一个function_exists()判断函数是否存在。“"里面放函数名 没括号
再有就是:在PHP中,只有函数内部的是局部变量!!!若想在函数中不用同名的局部变量,用全局的 前面加global!
而$_POST() $_GET() 本来就是全局的,不用加
例子:
$_POST['a']=100; $_GET['b']=300; function demo() { echo $_POST['a']; } demo();
<?php /* * 静态变量 * * * 1. 在函数中声明的静态变量, 只在第一次调用时声明. * 2. 第二次以后, 一看是静态变量, 就先到静态区中,看一下有没有这个变量, 如果有就使用, 而不去再声明 * 3. 静态变量,在同一个函数多次调用中 共享 * * */ static $c=99; function demo() { static $a = 0; $a++; echo $a."<br>"; } function test() { static $a = 0; $a++; } echo $c; demo(); demo(); test(); test(); test(); test(); demo(); demo(); demo();
伪类型参数的函数格式说明:
mixed funName(mixed $a, number $b, callback $c)
PHP是弱类型语言,不仅在声明变量时不需要指定类型,当然在声明函数时也不需要指定类型,所以在PHP中函数的每个参数,都可以为其传递任意类型的值。
三种伪类型: mixed、number 和 callback。
bool empty(mixed $var) //检查一个变量是否为空
bool usort(array &$array,callback $cmp_function)
//使用用户自定义的比较函数对数组中的值进行排序
number abs(mixed $number) //绝对值
引用参数
<?php /* * $a = 10; * * $b = &$a; * * $a = 400; * $b = 800; * * 1. 只有在内存中的变量, 才有地址 * 2. 有引用关系的两个变量, 一个变, 另一个就变, 相当于两个是一个 * * * 如果在函数说明中, 有&出现, 说明这个参数是一个引用参数, 你调用时传参数时, 就必须传一个变量 * */ $a= 20; function demo(&$a) { $a = 100; } echo $a."<br>"; demo($a); echo $a."<br>";
<?php /* * 默认参数 * * demo(string $name, int $age, [string $sex, [$string $email]]); * * * */ function demo($name, $age, $sex ="three", $email="four") { echo "{$name}--{$age}---{$sex}---{$email} <br>"; } demo("妹子", 20); demo("妹子", 20, "女"); demo("妹子", 20, "女", '[email protected]');
<?php /* * 可变参数 * * number demo([number $...]) * */ function demo() { $sum = 0; for($i=0; $i<func_num_args(); $i++){ $sum +=func_get_arg($i); } return $sum; } echo demo(1,2,3,4,5,6,7,8,9,0);
<?php /* * 如果将一个函数名称(字符串), 给一个变量(字符串), 然后在这个变量后面加上括号, 就会调用这个变量值对应函数 * * */ function add($a, $b) { return $a + $b; } function chen($a, $b) { return $a * $b; } function chu($a, $b) { if($b!=0) return $a/$b; else return false; } $var = "add"; $var = "chen"; $var = "chu"; echo $var(10, 20); chu(10, 20);