<?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(); //一个闭包就是当一个函数返回时,一个没有释放资源的栈区
?>

PHP笔记4__函数/全局、静态变量/函数参数/加载函数库/,,的更多相关文章

  1. Python函数的静态变量

    C语言中,在函数内部可以定义static类型的变量,这个变量是属于这个函数的全局对象.在Python中也可以实现这样的机制. def f(): if not hasattr(f, 'x'): f.x ...

  2. php自定义函数之静态变量

    如果我想知道函数被调用了多少次怎么办?在没有学习静态变量的时候,我们没有好的办法来解决. 静态变量的特点是:声明一个静态变量,第二次调用函数的时候,静态变量不会再初始化变量,会在原值的基础上读取执行. ...

  3. C++中的局部变量、全局变量、局部静态变量、全局静态变量的区别

    局部变量(Local variables)与 全局变量: 在子程序或代码块中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序 ...

  4. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  5. JavaFx之不通过全局静态变量进行窗体通信

    百度了n多窗体通信,,,总是通过定义全局静态变量进行传值通信..我个人不喜欢一个controller里写满所有的布局(这样显得臃肿,但是组件传值方便).有没有另外的办法进行模块化并且可以传值呢.. 肯 ...

  6. wpf绑定全局静态变量(mvvm)

    原文 wpf绑定全局静态变量(mvvm) 在实际的开发中,有一些集合或者属性可能是全局的,比如当你做一个oa的时候,可能需要展示所有的人员,这时这个所有的人员列表显然可以作为全局参数,比如这里有一个全 ...

  7. 前端笔记之jQuery(上)加载函数的区别&对象&操作HTML/CSS&动画&选择器

    一.jQuery简介 1.0 JavaScript编程比较恶心的地方 恶心1:选择元素麻烦,全线兼容的方法只有getElementById()和getElementsByTagName()两个.其他的 ...

  8. Linux下c函数dlopen实现加载动态库so文件代码举例

    dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了. ...

  9. lua加载函数require和dofile

    lua加载函数require和dofile Lua提供高级的require函数来加载运行库.粗略的说require和dofile完成同样的功能但有两点不同: 1. require会搜索目录加载文件; ...

随机推荐

  1. File Upload(文件上传)

    一句话木马 <?php @eval($_POST['key']); ?> /*eval(phpcode) eval() 函数把字符串按照 PHP 代码来计算. 该字符串必须是合法的 PHP ...

  2. 微信小程序view不能换行 text实现转义换行符

    在html中可以直接使用<br />换行,但是小程序wxml中使用<br />无效,可以换成\n Page({ data: { title: '至少5个字\n请多说些感受吧' ...

  3. SonarScanner扫描Maven项目使用说明

    最近在学习使用sonar扫描代码,已经成功扫描python项目,而扫描java代码不成功. 在网上找到的扫描java项目文章,经过尝试之后也没有成功. 本人自己研究了sonar官方的使用说明文章,将其 ...

  4. css颜色字符串转换, 字符串转化为驼峰形式

    * 将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff1. rgb 中每个 , 后面的空格数量不固定2. 十六进制表达式使用六位小写字母3. 如 ...

  5. CI框架 ::集成极光推送

    分三步 1:引入类: 2:新建Jpush类: 3:修改源码(PHP5.3.3环境)

  6. 『Python』面向对象(一)

    类和对象 类(class)是用来描述具有相同属性(attribute)和方法(method)的对象的集合,对象(object)是类(class)的具体实例.比如学生都有名字和分数,他们有着共同的属性. ...

  7. ElasticSearch搜索引擎

    官网:Elasticsearch:官方分布式搜索和分析引擎 | Elastic Elaticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据;本身扩 ...

  8. mac上通过git推送时忽略node_modules文件夹

    node_modules出现改动一般不需要通过git推送,如果不忽略node_modules每次安装新的包会出现几千条新变动,并没有必要推送 1.通过终端进入项目根目录 创建 .gitignore 文 ...

  9. HTML元素的三种类型及其转换

    HTML元素的三大类型 1.块元素 可以设置宽高大小,默认宽度为100%,并且独占一行. 例如:p ul li h1~h6 div form table 2.内联(行内)元素 无法设置宽高,元素大小随 ...

  10. 运行WampServer提示计算机中丢失 msvcr110.dll

    ​ 在第一次运行WampServer的时候,出现"无法启动此程序,因为计算机中丢失 MSVCR110.dll.尝试重新安装该程序以解决此问题. ​ 在浏览器的地址栏里输入 http://ww ...