php兄弟连学习60-90
函数
函数(function)是一段完成指定任务的已命名的代码块。函数可以遵照给他的一组值或参数完成特定的任务,并且可能返回一个值。
php🈶两种函数:自定义函数+系统函数
一个游戏:走路 打架 加分 逃跑 升级
一个独立体,就封装成函数,过程话开发函数。
函数优势:
控制程序设计复杂度
提高软件的可靠性
提高软件的开发效率
提高软件的可维护性
提高程序的重复性
2.自定义函数
函数是一个结构体,声明一个最简单的函数。
function table(){
echo '<table border="1" width="800" align="center">';
echo '<caption><h1>this is table</h1></caption>';
for($i=0;$i<10;$i++){
echo '<tr>';
for($j=0;$j<10;$j++){
$bg = $j % 2 == 0 ? "#999" : '#ff0000';
echo '<td bgcolor="'.$bg.'">'.($i * 10 + $j+1).'</td>';
}
echo "</tr>";
}
echo '</table>';
}
table();
3.函数的参数
让用户在调用函数可以改变函数内部的执行行为,达到用户的需求
声明函数时,提供的参数叫行参(形式上的参数)
调用的时候的参数是实参
行参和实参对应
顺序
类型
4.函数返回值
没有返回值就是一个过程,执行完就完了。
自定义函数格式:
function 函数名(参数){
函数体
return 值
}
函数名可以以字母下划线开头后跟零个或多个字母下划线数字和任何字符串。
函数名不区分大小写。命名函数不使用已经声明的函数,或者php内建的函数名。
exit();无返回值
return 返回值。
判断函数是否存在
function_exits();
if(function_exists("table")){
}
5.php的变量范围
函数内部声明的变量,只能在函数内部调用,局部变量。
函数的参数也是一个局部变量,可以调用时给值传值。
6.php全局变量
在函数外部声明的变量都是全局变量,可以在每个函数中使用,(顺序问题)
php声明变量不用修饰符,所以你确定不了是否是新声明的。
用global $name = "xiaowei";
与顺序有关
$name = "xiaoewi";
global $name;
echo $name;
声明在调用之前
常量可以直接使用
超全局数组9个数组$_POST $_GET
7.静态变量
内存分4段
栈内存-空间小 释放比较快
初始化静态段
static $c=30;
1.在函数中声明的静态变量,只在第一次调用时声明
2.第二次以后一看是 就不再声明直接使用
3.静态变量在同一个函数多次调用中共享
一般静态变量都在函数内部定义,为的是保存它的当前值。。。。。
define("NAME", "高老师");
8.引用变量 别名
$a = 10;
$b = &$a;
把a的地址传递给b,改变b就相当于改变了a
只有在内存中的变量才有地址
如果在函数说明中有&出现,说明这个参数是一个引用参数,你调用时传参数时,就必须传一个变量
function demo(&$a){
$a =100;
}
$b = 30;
demo($b);
echo $b; --> 100
函数的参数是引用的参数。。。。。。传递的一定是一个变量名,不能是值
void funName(array &args)
行参用&修饰,在调用该函数时必须传入一个变量给这个参数。
9.默认参数
给行参直接赋值
可选参数
必选参数
demo(string $name,int $age,[string $sex,[string $email]])
10.可变参数
number demo([number ...]) ...表示传递几个都可以
func_num_args
func_num_arg[$i]
count数组个数
弱类型的语言根本
10.php变量函数
function add($a,$b){
return $a + $b;
}
$var = "add";
$var();
变量函数。。。。。
用变量名字+括号
11.回调函数
在使用一个函数的时候如果传递一个变量不能解决多大的问题,就需要传递一个过程进入到函数中,改变函数的执行行为。
在函数的调用时,在参数中传的不是一个变量或一个值,而是一个函数,这就是回调函数。
usort(arr,function($a,$b){return $a-$b;});
strlen($a);
12.回调函数1
变量函数制作回调函数
function demo($num,$n){
for($i=0;$i<$num;$i++){
if($n($i)){
continue;
}
echo $i."<br/>";
}
}
function test($i){
if(preg_match('/3/', $i)){
return false;
}else{
return true;
}
}
demo(100,"test");
13.回调函数2,借助系统函数call_user_func_array来实现
参数个数是变化时候
function aa($a=3,$b=3,$c=3){
echo $a.$b.$c;
}
call_user_func_array("aa", array(1,2));
14.系统函数
<?php
$dirname = "./phpmyadmin";
//打开目录资源
$dir = opendir($dirname);
readdir($dir)."<br/>";
readdir($dir)."<br/>";
while ($file = readdir($dir)) {
$file = $dirname . "/" . $file;
if(is_dir($file)){
echo $file."<br/>";
}
}
//关闭
closedir($dir);
?>
15.递归函数
1.在函数中调用自己
一定要写一个退出函数的条件