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. Python1--简介及基础语法

    0. 简介 Python易于学习的编程语言,有很多现成的第三方库可以调用,不用重复造轮子,老话说:"人生苦短,我用 Python" 1. 安装Python Mac:brew ins ...

  2. Vue基础(一)---- 模板语法

    1.基本理解 Vue其实是一个渐进式JavaScript框架,封装好了一些方法,不再需要操作通过操作DOM,在相同的目标下能够更快的编写代码. 声明式渲染→组件系统→客户端路由→集中式状态管理→项目构 ...

  3. Java自学-图形界面 Swing中的线程

    Swing中的线程 步骤 1 : 三种线程 在Swing程序的开发中,需要建立3种线程的概念 初始化线程 初始化线程用于创建各种容器,组件并显示他们,一旦创建并显示,初始化线程的任务就结束了. 事件调 ...

  4. eslint 的 使用常见问题(一)

    在source tree 远程拉去一个项目,然后无缘无故 代码各处飘红 ,然后看了很是烦躁.碰见一下几个问题,后续持更 一.升级es6 出现这个问题的原因:let是EcmaScript 6 里面才有的 ...

  5. MinGW-w64安装过程中出现ERROR res错误的问题

    使用 mingw-get-setup.exe 安装.在官网http://www.mingw.org/上搜索download/installer,点击下载. 如果使用 mingw-w64-install ...

  6. 04router

    1.以 / 开头的嵌套路径会被当作根路径.一级路由可以放在二级router-view里面 实现的效果是页面嵌套 { path: '/console', name: 'console', compone ...

  7. 手把手教你 在Pytorch框架上部署和测试 关键点人脸检测项目DBFace,成功实现人脸检测效果

    这期教向大家介绍仅仅 1.3M 的轻量级高精度的关键点人脸检测模型DBFace,并手把手教你如何在自己的电脑端进行部署和测试运行,运行时bug解决. 01. 前言 前段时间DBFace人脸检测库横空出 ...

  8. WebLogic12C安装配置文档

    jdk版本:1.8; jdk安装路径不准有空格 JDK安装: jdk版本:1.8; jdk安装路径不准有空格 WebLogic安装: 解压安装包 解压JAR 找到fmw_12.2.1.3.0_wls\ ...

  9. Java实现内嵌浏览器

    创建项目 ---->   导入需要的jar ---->  代码实现 需要的jar: https://pan.baidu.com/s/1MEZ1S0LnKSMGQm24QWgmCw 代码: ...

  10. flutter vscode 安卓打包apk文件

    配置 VSCode默认是没有使用密钥签名的,往往我们在正式项目中是需要签名的.那就创建好了...所以需要自己创建并使用密钥签名 步骤一 创建密钥库 执行以下命令: keytool -genkey -v ...