php第二天-函数的用法及封装,变量范围,匿名函数,递归函数
1.函数
<?php
function test($info){
return $info;
} echo test("hello") ?>
输出hello
2.函数实现一个累加
<?php
echo "用函数实现一个累加";
function add($a){
$sum = 0;
for($i = 0;$i <= $a;$i++){
$sum += $i;
}
return $sum;
}
echo "50的累加是:".add(50)."<br>";
echo "100的累加是:".add(100)."<br>"
?>
输出
用函数实现一个累加50的累加是:1275
100的累加是:5050
3.function_exists判断函数是否存在
<?php
function add($a){
$sum = 0;
for($i = 0;$i <= $a;$i++){
$sum += $i;
}
return $sum;
}
var_dump(function_exists('add'))
?>
4.局部变量
<?php
$a = 0;
function print_A(){
$a = 3;
echo "在函数中显示局部变量a值:$a <p>";
return $a;
}
$b = print_A();
echo "在函数外显示局部变量b值:$b <br>";
echo $a; ?>
输出
在函数中显示局部变量a值:3
在函数外显示局部变量b值:3
0
5.全局变量
<?php
$a = 0;
function print_A(){
global $a;
$a = 3;
echo "在函数中显示局部变量a值:$a<p>";
return $a;
}
$b = print_A();
echo "在函数外显示局部变量b值:$b <br>";
echo $a; ?>
输出
在函数中显示局部变量a值:3
在函数外显示局部变量b值:3
3
6.unset可以删除释放变量(内存中删除)
<?php
$a = 1;
function print_A(){
global $a;
unset($a);
$a = 3;
echo "在函数中显示局部变量a值:$a<p>";
return $a;
}
$b = print_A();
echo "在函数外显示局部变量b值:$b <br>";
echo $a; ?>
输出
在函数中显示局部变量a值:3
在函数外显示局部变量b值:3
1
7.静态变量
<?php
function test(){
$a = 0;
echo $a;
$a++;
}
test();
test();
test();
?>
输出000
<?php
function test(){
static $a = 0;
echo $a;
$a++;
}
test();
test();
test();
?>
输出012,因为static会在内存中申请
8.chr传入ascii码,ceil进一法取整
<?php
echo chr(97);
echo '<br>';
echo ceil(5.61);
echo '<br>';
?>
9.引用参数的函数
<?php
function test(&$arg){
$arg = 200;
}
$var = 100;
test($var);
echo $var;
?>
输出200
<?php
function test($arg){
$arg = 200;
}
$var = 100;
test($var);
echo $var;
?>
输出100
10.默认传参
<?php
function test($name = "123")
{
echo $name;
}
test();
echo "<br>";
test(456);
?>
输出123 456
11.可变个数参数函数
<?php
/**
声明一个函数more_args(),用于打印参数列表的值
虽然没有声明参数列表,但可以传入任意个数,任意类型的参数值
*/
function more_args() {
$args = func_get_args(); //将所有传递给脚本函数的参数当做一个数组返回
for($i=0; $i<count($args); $i++) { //使用for循环遍历数组$args
echo "第".$i."个参数是".$args[$i]."<br>"; //分别输出传入函数的每个参数
}
}
more_args("one", "two", "three", 1, 2, 3); //调用函数并输入多个参数
?>
输出
第0个参数是one
第1个参数是two
第2个参数是three
第3个参数是1
第4个参数是2
第5个参数是3
12.func_get_args()函数(返回一个数组,包含所有参数)
<?php
function test(){
var_export(func_get_args());
}
test(1,2,3,4,5);
?>
输出
array ( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, )
13.func_num_args()函数(返回参数总数 )
<?php
function test(){
var_export(func_get_args());
echo "<br>";
var_export(func_num_args());
}
test(1,2,3,4,5);
?>
输出
array ( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, ) 5
14.func_num_arg()函数(接收一个数字参数,返回指定参数)
<?php
function test(){
var_export(func_get_args());
echo "<br>";
var_export(func_num_args());
echo "<br>";
var_export(func_get_arg(1));
}
test(1,2,3,4,5);
?>
输出
array ( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, ) 5 2
<?php
function test(){
for($i=0;$i<func_num_args();$i++){
echo "key==>".$i."value==>".func_get_arg($i);
echo "<br>";
}
}
test("one","two","three","four");
?>
输出
key==>0value==>one
key==>1value==>two
key==>2value==>three
key==>3value==>four
15.回调函数
15.1 call_user_func_array
<?php
function foobar($arg,$arg2){
echo __FUNCTION__,"got $arg and $arg2";
}
call_user_func_array("foobar", array("one","two"));
?>
输出
foobargot one and two
15.2 使用变量函数声明和应用的回调函数
<?php
function test($fun){
$fun("1");
}
function abc($num){
echo $num;
} echo test('abc');
?>
输出1
15.2 类静态函数和对象的方法回调
<?php
/* 声明一个类Demo,类中声明一个静态的成员方法fun() */
class Demo {
static function fun($msg1, $msg2) {
echo '$msg1 = '.$msg1;
echo '<br>';
echo '$msg2 = '.$msg2;
}
}
/* 声明一个类Test, 类中声明一个普通的成员方法fun() */
class Test {
function fun($msg1, $msg2) {
echo '$msg1 = '.$msg1;
echo '<br>';
echo '$msg2 = '.$msg2;
}
} call_user_func_array( array("Demo", 'fun'), array('cywl', '一寸一叶') );
echo "<br>";
call_user_func_array( array(new Test(), 'fun'), array('BroPHP', '学习型PHP框架') );
输出
$msg1 = cywl
$msg2 = 一寸一叶
$msg1 = BroPHP
$msg2 = 学习型PHP框架
16.匿名函数
<?php
$test = function($name){
printf("hello %s\r\n",$name);
};
$test('php');
$test('world');
?>
输出
hello php hello world
<?php
function test($n){
echo $n." "; if($n>0)
test($n-1);
else
echo "<-->";
echo $n." ";
}
test(3);
?>
输出
3 2 1 0 <-->0 1 2 3
php第二天-函数的用法及封装,变量范围,匿名函数,递归函数的更多相关文章
- js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)
js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) { return i1 + i2;//如果不写return返回 ...
- PHP匿名函数如何理解,什么是匿名函数
揭秘PHP匿名函数 定义:匿名函数就是没有名字的函数. 有2种形式的匿名函数: 形式1:将一个匿名函数"赋值"给一个变量——此时该变量就代表该匿名函数了! 形式2: 是直接将一个匿 ...
- memset函数及其用法,C语言memset函数详解
在前面不止一次说过,定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构.在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”. 每种类型的变量都有各自的 ...
- [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口
函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type use ...
- 学习Pytbon第十天 函数2 内置方法和匿名函数
print( all([1,-5,3]) )#如果可迭代对象里所有元素都为真则返回真.0不为真print( any([1,2]) )#如果数据里面任意一个数据为真返回则为真a= ascii([1,2, ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- np.random.random()函数 参数用法以及numpy.random系列函数大全
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.r ...
随机推荐
- HDFS的数据流读写数据 (面试开发重点)
1 HDFS写数据流程 1.1 剖析文件写入 HDFS写数据流程,如图所示 1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是 ...
- 寻找猴王小游戏php代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Http请求-okhttp3基本用法
简介 HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽.OkHttp是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个主 ...
- 区块链入门到实战(32)之Solidity – 代码注释
Solidity 支持c风格和c++风格的注释. //之后到行尾的文本,都被看作注释,编译器忽略此内容 /* 与 */ 之间的文本被看作注释, 编译器忽略此内容 示例 注释示例. function g ...
- html行内块元素之间的缝隙
关于html行内块元素之间缝隙的那点儿事情 事情是这样子的,我起初打算验证使用transform属性的标签是否会影响其他的标签的布局,于是写了下面一段代码: <!DOCTYPE html> ...
- Linux下关闭和开启IPv6的方法
确认IPV6是否开启 在Linux下确认IPv6是否已经被启用,可以从三个方面确定. 1.使用ifconfig查看自己的IP地址是否含有IPv6地址. eth0 Link encap:Ethernet ...
- 用aop去解决事物问题(tx)记录学习之aop1.2
上一个文章我们了解了什么事aop,以及aop的使用方法,主要是把自己想要加入的通知(advice)加入到我们的方法里, 比如上一章我们说的事把myadvice类中的before方法织入到userser ...
- 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇
本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
- 【Android】Android开发小功能,倒计时的实现。时间计时器倒计时功能。
作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...
- UI 科学
以简书为案例讲述「尼尔森十大可用性原则」 http://www.jianshu.com/p/a45e4ad68e20 你真的懂得尼尔森的十大可用性原则么? http://jy.sccnn.com/po ...