PHP笔记4__函数/全局、静态变量/函数参数/加载函数库/,,
<?php header("Content-type: text/html; charset=utf-8"); echo table(5,5); function table($rows,$cols){ //函数 $str = ‘‘; $str .= ‘<table border="1" width="800" align="center">‘; $str .= ‘<caption><h1>表格</h1></caption>‘; for($i=0;$i<$rows;$i++){ $bg=($i%2==0)?"#cccccc":""; $str .= ‘<tr bgcolor="‘.$bg.‘">‘; for($j=0;$j<$cols;$j++){ $str .= ‘<td>‘.($i*$cols+$j).‘</td>‘; } $str .= ‘</tr>‘; } $str .= ‘</table>‘; return $str; } echo table(10,10); if(function_exists("table")){ //判断函数是否存在的函数 echo "existed!<br>"; }else{ echo "not existed!<br>"; } ?>
<?php header("Content-type: text/html; charset=utf-8"); $name = "I"; define("cha1","i love u."); function demo(){ echo cha1.‘<br>‘; //常量/系统自带的一些变量($_POST,$_GET)可以不用global声明 $name = "She"; echo $name.‘<br>‘; global $name; //声明接下来使用全局变量$name echo $name.‘<br>‘; $name = "U"; echo $name.‘<br>‘; } echo $name.‘<br>‘; demo(); echo $name.‘<br>‘; /** 静态变量(用处:统计函数被调用的次数~) 1.在函数中声明的静态变量,只在第一次调用时声明, 2.第二次以后,一看是静态变量,就到静态区中看一下有没有这个变量,如果有就使用,而不去再声明 3.静态变量在同一个函数多次调用中共享,在不同函数中不共享。(不仅存储了静态变量名,还存储了是属于哪个函数) */ function demo1(){ static $c = 0; $c++; echo $c.‘<br>‘; } function test(){ static $c = 0; $c++; echo $c.‘<br>‘; } demo1(); demo1(); test(); test(); test(); demo1(); //上面输出:1,2,1,2,3,3 ?>
<?php header("Content-type: text/html; charset=utf-8"); $b = 20; function demo(&$a){ //引用 $a =100; } echo $b.‘<br>‘; demo($b); //只能传变量,不能传数字 echo $b.‘<br>‘; function demo1($a=123,$b="hello"){ //默认参数 echo $a.‘ ‘.$b.‘<br>‘; } demo1(); //输出:123 hello demo1(321,"keke"); //输出:321 keke /** 可变参数(如果函数参数太多,用这种方法好) */ function demo2(){ /* func_get_args() //返回一个数组,包含所有参数 func_num_args() //返回参数总数 */ $arr=func_get_args(); var_dump($arr); echo ‘##########<br>‘; $sum = 0; for($i=0;$i<count($arr);++$i){ $sum+=$arr[$i]; } echo $sum.‘<br>‘; } demo2(1,2,3,4,5); /** 变量函数 */ function add($a,$b){ return $a+$b; } function sub($a,$b){ return $a-$b; } $var = ‘add‘; echo $var(2.2,3.1).‘<br>‘; $var = ‘sub‘; echo $var(2.2,3.1).‘<br>‘; ?>
<?php header("Content-type: text/html; charset=utf-8"); /** 在使用一个函数的时候,如果传一个变量不能解决多大的问题,就需要将一个过程传入函数中,改变函数的执行行为。 回调函数:在函数的调用时,在参数中传的不是一个变量或一个值,而是一个函数,这就是回调函数参数 */ function cmp1($a,$b){ if($a==$b) return 0; if($a>$b) return 1; else return -1; } $arr = array(1,5,8,9,-1,-5,-99); print_r($arr); sort($arr); echo ‘<br>‘; print_r($arr); echo ‘<br>‘; usort($arr,"cmp1"); //从小到大排序 print_r($arr); echo ‘<br>‘; /** 制作回调函数 */ 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 true; else return false; } function test1($i){ if($i==strrev($i)) return false; else return true; } demo(100,‘test‘); demo(100,‘test1‘); ?>
<?php header("Content-type: text/html; charset=utf-8"); /** 加载自定义函数库(*:加载并执行) include_once() //失败时产生警告 require_once() //失败时产生致使错误 */ include_once(‘test123.php‘); include_once(‘test123.php‘); include_once(‘test123.php‘); include_once(‘test123.php‘); include(‘test124.txt‘); include(‘test124.txt‘); include(‘test124.txt‘); include(‘test124.txt‘); hello(); /** 匿名函数,也叫闭包函数(只在PHP5.3.0以上版本有效) */ $var = function(){ echo ‘kekekek...‘.‘<br>‘; }; //一定要以;结束 $var(); var_dump($var); //对象类型 /** 闭包函数:通俗地说,子函数可以使用父函数中的局部变量,这种行为叫做闭包 【建议:PHP闭包的特性并没有太大的惊喜,其实用CLASS就可以实现类似甚至更强大的功能,不过匿名函数还是挺有用的 目前还不稳定,不适合正式开发】 【闭包函数返回时,该函数内部变量处于激活状态,函数所在栈区仍然保留】 1.闭包外层是个函数 2.闭包内部都有函数 3.闭包会return内部函数 4.闭包返回的函数内部不能有return(因为这样就真的结束了) 5.执行闭包后,闭包内部变量会存在,而闭包内部函数的内部变量不会存在。 闭包的应用场景: 1.保护函数内的变量安全, 2.在内存中维持一个变量。 */ function one(){ //一个简单闭包函数 $a = 10; $b = 12; $var = function() use ($a,&$b){ echo ‘111111111<br>‘; echo $a.‘<br>‘; echo $b.‘<br>‘; $a++; $b++; }; $var(); echo ‘------‘.$a.‘--------<br>‘; echo ‘------‘.$b.‘--------<br>‘; return $var; } $lol = one(); $lol(); $lol(); //一个闭包就是当一个函数返回时,一个没有释放资源的栈区 ?>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。