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()函数(返回一个数组,包含所有参数)

//var_export() 函数用于输出或返回一个变量,以字符串形式表示。

<?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

 
17.递归函数
<?php
function test($n){
echo $n."&nbsp;&nbsp;"; if($n>0)
test($n-1);
else
echo "<-->";
echo $n."&nbsp;&nbsp;";
}
test(3);
?>

输出

3 2 1 0 <-->0 1 2 3

因为每个线程会生成一个子线程,然后子线程最后都会碰到0,所以就回收了回来,所以每一个都会回显
include( )和require( ) 函数
require( )将一个文件在预处理期间被导入,像把该文件粘贴到使用函数的地方。
include( )与require ( )几乎等价,区别在于在脚本执行时包含,当处理失败时,include( )产生一个警告而require( )则导致一个致命错误。

php第二天-函数的用法及封装,变量范围,匿名函数,递归函数的更多相关文章

  1. js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)

    js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...

  2. python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

    1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  3. JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)

    函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) {             return i1 + i2;//如果不写return返回 ...

  4. PHP匿名函数如何理解,什么是匿名函数

    揭秘PHP匿名函数 定义:匿名函数就是没有名字的函数. 有2种形式的匿名函数: 形式1:将一个匿名函数"赋值"给一个变量——此时该变量就代表该匿名函数了! 形式2: 是直接将一个匿 ...

  5. memset函数及其用法,C语言memset函数详解

    在前面不止一次说过,定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构.在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”. 每种类型的变量都有各自的 ...

  6. [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口

    函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type use ...

  7. 学习Pytbon第十天 函数2 内置方法和匿名函数

    print( all([1,-5,3]) )#如果可迭代对象里所有元素都为真则返回真.0不为真print( any([1,2]) )#如果数据里面任意一个数据为真返回则为真a= ascii([1,2, ...

  8. python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数

    目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...

  9. np.random.random()函数 参数用法以及numpy.random系列函数大全

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.r ...

随机推荐

  1. DataGrid样式

    1.自定义列(DataGridTemplateColumn) <DataGridTemplateColumn Width="130"> <DataGridTemp ...

  2. redis 过期策略你知道多少,看完文章你会不自觉说喔哦

    Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除.你可以想象 Redis 内部有一个死神,时刻盯着所有设置了过期时间的 key,寿命一到就会立即收割. 你还可以进一步站在死神的角度 ...

  3. ios 常见性能优化

    1. 用ARC管理内存 2. 在正确的地方使用reuseIdentifier 3. 尽可能使Views透明 4. 避免庞大的XIB 5. 不要block主线程 6. 在Image Views中调整图片 ...

  4. oracle数据库创建数据库实例-九五小庞

    oracle数据库创建数据库实例

  5. Jmeter4.0安装教程

    1. 检查安装环境 1.1 Jdk要求 JDK版本:1.6+ 1.2 检查是否安装JDK win  +  R  快捷键打开运行,输入cmd 打开面板,在面板中输入  java -version,出现如 ...

  6. Dubbo系列之 (六)服务订阅(3)

    辅助链接 Dubbo系列之 (一)SPI扩展 Dubbo系列之 (二)Registry注册中心-注册(1) Dubbo系列之 (三)Registry注册中心-注册(2) Dubbo系列之 (四)服务订 ...

  7. Agumaster点个按钮后台刷新前台一步步出状态

    --2020年5月4日--

  8. [Java数据结构]Queue

    Queue扩展了Collection,它添加了支持根据先进先出FIFO原则对元素排序的方法. 当对Queue调用add和offer方法时,元素始终添加在Queue的末尾:要检索一个元素,就要使用一个元 ...

  9. JSTL日期格式化用法

    JSP Standard Tag LibrariesFormatting and InternationalizationTwo form input parameters, 'date' and ' ...

  10. Ubuntu中的launcher

    最近在ubuntu系统中下载了最新版的eclipse,在一个临时文件夹中解压了eclipse压缩包,然后打开eclipse,按平时常规做法,我在launcher里右键点击eclipse,选择“锁定到启 ...