目录

  • 自定义函数
    • 参数
    • 函数返回值
  • PHP变量的范围
    • 局部变量
    • 全局变量
    • 静态变量
  • 参数的传递
    • 按值传递参数
    • 按引用传递参数
    • 函数的默认参数
    • 可变长度参数
  • 可变函数(变量函数)
  • **递归函数**
  • 内部(内置)函数

自定义函数

<?php
function text()
{echo '你好!';
}
text();
注意:function后跟自定义函数。

末尾的text():为函数的调用,与前面的保持一致,同时text():放在自定义函数前,也能实现。

函数的调用需要遵守定义函数的时候写的规则,一一对应,将具体的实际参数传给定义函数时候写的形式参数;
调用函数之后执行的过程是相对独立的,互不干扰的,默认没有联系。

参数

形式参数由零个,一个或多个变量组成。
实际参数由零个,一个或多个参数组成,每个参数是一个表达式,用逗号隔开。

<?php
function add($a,$b)//形式参数,一种形式,在这里,没有具体的值
{echo $a+$b;
}
add(2,3);//实际参数
?>

函数返回值

是将函数执行后的结果返回给调用者,默认值如果不写返回,则函数的返回值为NULL。

<?php
function add($a,$b)
{return $a+$b;//返回值给调用的地方,结束这个函数的运行。
}
var_dump(add(2,3));//可输出
?>

调用了add函数

<?php
function add($a,$b)
{return $a+$b;
}
$i=add(2,3);
echo $i;
?>

PHP变量的范围

局部变量

局部变量也称内部变量,是在函数内定义的,其作用域仅限于函数内部(即为{ }内),离开函数后再使用这种变量就是非法的错误的。

<?php
function add(){$i=22;echo $i;//有意义
}
echo $i;//无意义
add();

全局变量

也叫外部变量,在函数的外部定义的,它的作用域为从变量定义处开始,到本程序,文件末尾。
但在PHP函数中无法直接使用全局变量,如需使用,必须用global声明变量。

<?php
$i=10;
function add(){global $i;//声明$i为全局变量,然后在这个函数内部就可以使用$i;echo $i;
}
add();

静态变量

在函数内部定义变量时,使用static关键字来定义变量。

<?php
function add(){static $i=23;//静态变量,仅在第一次调用时执行,echo ++$i;//当第二次执行这个函数的时候,$i这个变量依旧存在
}
add();
echo'<br />';
add();

而缺少关键字

<?php
function add(){$i=22;echo ++$i;//有意义
}
add();
echo'<br />';
add();

参数的传递

按值传递参数

默认的,我们在传递参数的时候默认使用的就是这个方式。
对于形式参数的操作,根本不是影响到实际参数(变量)的值,两者 相当于没有联系!

<?php
function add($i){echo ++$i;
}
$i=10;
add($i);
echo '<br />'.$i;

按引用传递参数

按引用传递参数,相当与形式参数和实际参数指的是同一个人,只是名字不一样,对于形式参数的操作会直接影响到实际的参数(变量)

<?php
function add(&$i){echo ++$i;
}
$i=10;
add($i);
echo '<br />'.$i;

函数的默认参数

可以给形式参数设置默认值,设置方法很简单直接赋值即可!

<?php
function add($i=10){echo ++$i;
}
add();

如果不传,按上面的值走。

<?php
function add($i=10){echo ++$i;
}
add(20);

如果传的话,按下面的实际参数值走。

注意:形式参数加默认值,要从右往左。

<?php
function add($a=1,$i){echo $a+$i;
}
add(,20);

会报错,要将右面的$i先赋值。才可以对于$a 进行赋值。

<?php
function add($a,$i=1){echo $a+$i;
}
add(3,);

<?php
function add($a,$i=1){echo $a+$i;
}
add(3);

均可的到,如图所示。

以次同理…

可变长度参数

fun_get_args();//数组类型
fun_get_arg();//括号内可加数字(从0开始),代表要输出传入的第几个实参。
多为var_dump(fun_get_arg());
func_num_args();//返回传入函数的参数个数
这三个函数可以使用在我们的定义函数内部,能够返回给我们一些关于参数的信息。

可变函数(变量函数)

可变函数不能直接用于例如 echo,print,unset(),isset();empty(),include,require 以及类似的语言结构,

<?php
function text(){echo '可变text';
}
$a='text';//把函数名字加上引号,赋值给变量即可,
$a(2);//text();

递归函数

在函数内部,自己调用自己,

<?php
function text($n){echo $n.'可变';//前if($n>0){text($n-1);}else{echo'<-->';}echo $n.'可变';//后
}
text(3);
$n 是局部变量,在分配的空间里面相互独立,没有关联。

当先输入3执行完后键入判断,判断要求用test(),函数test()没有执行完毕,后面的输出3也不会执行。

内部(内置)函数

php提供给我们许多现成的函数或者结构,我们可以在实际的开发中直接使用。
还有一些函数需要开启 特定的php扩展模块,否则在使用他们时会得到一个致命的”未定义函数“错误。

PHP笔记 17 18 19 20 21相关推荐

  1. 蓝桥杯 算法训练 - 连续正整数的和 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。   输入一个正整数 n(<=10000)   输出 m 行(n有m

    问题描述 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27. 输入一个正整数 n(<=10000) 输出 m 行(n有m种表示法),每行是两个正整数a,b ...

  2. C4D R14/15/16/17/18/19/20软件安装包及教程

    软件介绍: 中文名4D电影,外文名CINEMA 4D,研发公司为德国Maxon Computer,特点为极高的运算速度和强大的渲染插件,使用在电影<毁灭战士><阿凡达>中,获得 ...

  3. 小甲鱼python课后习题【16,17,18,19,20】

    [学习笔记,仅供学习交流使用,知识源于鱼c论坛] 作业16: 测试题: 0.我们根据列表.元祖和字符串的共同特点,把它们三统称为什么? 序列   1)都可以通过索引得到每一个元素   2)默认索引值总 ...

  4. CTFshow 信息收集 web16 17 18 19 20

    目录 web16 提示: flag: web17 flag: web18 提示: flag: web19 提示: flag: web20 信息收集收官 提示: flag: web16 提示: 对于测试 ...

  5. fedora 18 19 20 21 22 23 怎么安装中文语言包

    Fedora 默认选择英文安装后,如何切换成中文: #yum install system-config-language #system-config-language 选择简体中文

  6. 黑马程序员 一步一步往上爬 学习毕老师java视频第17,18,19天

    ---------------------- <a href="http://edu.csdn.net/heima" target="blank"> ...

  7. Python二级笔记(18,19合集知识点篇)

    知识点: 1,软件测试的目的是发现程序中的错误.调试是作为成功测试的后过而出现的步骤,也就是,调试是在测试发现错误之后排除错误的过程.软件调试的任务是诊断和改成程序中的错误. 2,深度等于控制的层数 ...

  8. Python二级笔记(18,19合集操作篇)

    操作题: 1,键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为25个字符,等号字符(=)填充,右对齐,带千位分隔符.如果输入正整数超过25位,则按照真实长度输出. 代码: s = input( ...

  9. 正则手机号码校验11位,13,14,15,16,17,18,19开头

最新文章

  1. 阿尔法特磁悬浮制冷机组荣获“2016年度中国数据中心优秀节能产品”殊荣
  2. 通往大神之路,百度Java面试题前200页。
  3. Arrays工具类(jre中基本类库提供的工具类)
  4. junit注释_通过此注释改善您的JUnit体验
  5. LeetCode 1260. 二维网格迁移(二维转一维)
  6. 作者:​光亮(1982-),男,博士,华为技术有限公司高级标准经理。
  7. one大白陪你聊聊2021年总结
  8. 计算机丢失disrupt,disrupt造句
  9. 从全息投影到全息平台,必须克服7个障碍
  10. java integer最大值_java int型最大值/最小值,最大值+1,最小值-1
  11. FairyGUI笔记 :MovieClip(三)
  12. css写三角兼容ie6
  13. jmeter上传文件踩坑指南
  14. js 实现简单todo效果
  15. 神武授权位置服务器,《神武3》X诸葛八卦村 多益网络第二个大型文创项目即将开启...
  16. 基于深度学习的车辆信息识别(一):车辆颜色识别
  17. VMware Workstation安装教程
  18. 有未经处理的异常 0xC00000FD Stack overflow (参数: 0x00000000, 0x00842000)
  19. Java 中 == 与 equals 区别,再确认一遍?
  20. xp系统计算机蓝屏,xp电脑开机蓝屏代码0×0000000A怎么办

热门文章

  1. 晋升项目经理一个月,我想离职.........
  2. 良心整理:PDF工具合集
  3. Linux的数字签名,Ubuntu系统下-加密和数字签名Email
  4. C++ | shared_ptr与weak_ptr
  5. 0.1- 机械加工工艺-----切削加工基础
  6. js实现点击下载文件
  7. 小白也可以学会小爱同学语言控制灯
  8. taro: 如何使用编译配置中定义的常量defineConstants
  9. BUUCTF SimpleRev(涉及大小端序存储的问题)
  10. LAPACK的C/C++接口及代码实例