封装:自制私有对象及函数控制
class jundui { private $jm; private $rs; private $wq; private $nl; private $gx; function __set($i,$j) { if($i=="jm") $this->jm=$j; else if($i=="wq") $this->wq=$j; else if($i=="rs") { if(is_int($j)) $this->rs=$j; else $this->rs=false; } else if($i=="nl") { if(is_int($j)&&$j>18&&$j<55) $this->nl=$j; else $this->nl=false; } else if($i=="gx") { if($j=="敌"||$j=="友") $this->gx=$j; else $this->gx=false; } } } $a=new jundui; $a->jm="中国工农红军"; $a->rs=1000000; $a->wq="机枪,坦克,飞机,导弹,原子弹"; $a->nl=132; $a->gx="友"; var_dump($a);
简单的递归函数以及调用(递归函数有进有出,反复执行)
//在函数中自己调用自己就称为递归 function test($i) { echo $i.‘<br>‘; if($i>0) test($i-1); else echo"__________<br>"; echo $i.‘<br>‘; } test(10);
利用递归遍历目录的函数以及调用方式
function fordir($name) //定义函数名 { $i=opendir($name); //打开目录 readdir($i); //获取第一个目录. readdir($i); //获取第二个目录.. while($j = readdir($i)) //从第三个文件开始循环,当完全获取目录后返回flase,循环节俗 { $j=$name."/".$j; //获取目录下的目录 if(is_dir($j)) //判断文件是否为目录文件 { echo "目录{$j}<br>"; //输出文件名 fordir($j); //反复调用函数已达到到读取目录下所有子目录下所有子目录的子目录...... } else echo "文件{$j}<br>"; //输出文件名 } closedir($i); } $name="./mulu"; //获取目录路径,引号内目录的名称前要要加“/.” fordir($name) //调用函数
调用其他文本的函数(include,require)
include "function.文件名"; //文件名为函数所在的文件路径,可以是其它格式,一般用于根据条件调用且对程序影响不大时,代码错误时出现警告
include_once "function.文件名"; //当调用多次时,默认只调用一次
require"function,文件名"; //用于对程序影响很大时候,调用失败程序就无法执行时,调用代码有错时出现致命错误
require_once"function.文件名"; //当调用多次时,默认只调用一次
匿名函数($name属于内置类closure的一个对象)
$name=function($i,$j) { echo "这是一个匿名函数"; return $i*$j; }; //函数后要加分号 echo $name(2,3); //这样调用和下方的效果一样echo $name(2,function(){return 3;}) //匿名函数可以作为函数的参数
寻找全局变量$a第一次出现的值
global $a;
闭包函数(不稳定)
function father() //声明父函数 { $a=1; $b=2; $son=function($i) use(&$a,&$b) //声明一个匿名函数为子函数,子函数不能有返回值 //子函数调用父函数的变量时,加取地址符才能让变量在父函数全局变化,不加的话只是赋值,不改变父函数的函数全局变量 { echo $i.‘<br>‘; $a++; $b++; echo $a*$b.‘<br>‘; }; return $son; //将子函数作为返回值 } $father=father(); //调用时,函数内部变量不会被释放 $father("调用第一次"); //由于变量不释放,每调用一次,父函数的变量$a,$b一直在变化 $father("调用第二次"); $father("调用第三次");
时间: 2024-10-17 13:03:56