php函数
时间:2020-03-27
本文章向大家介绍php函数,主要包括php函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
函数
函数含义
- 函数:是实现特定功能的、可以重复执行的代码段;
- 函数名:从语法上讲,函数名中能有汉字,但在实际开发中不建议使用!
函数结构
function 函数名 () {
//代码块
}
函数名定义规则
- 开头:
[a-zA-Z_\x7f-\xff]
- 函数名:
[a-zA-Z0-9_\x7f-\xff]
- 函数的首字母不能为数字、可以是汉子或者字母,函数中间可以使用数字
函数的返回值
- 和其他语言不同的是,
PHP
并没有在函数声明的时候显示函数是否有返回值,如果函数内部使用了return
即表示有返回值,反之则表示没有返回值,返回类型可以为对象、数组、字符串等。
函数变量
//局部变量
//局部动态变量:变量只在函数内部执行,执行完毕则被销毁;
//局部静态变量:使用static修饰,执行完毕不被销毁;
//注:函数内部定义的变量,为局部变量,函数外部不能访问。
function func()
{
$a = 3; //局部动态变量
static $b = 34; //局部静态变量
}
//全局变量
//在函数外部定义的变量,称为全局变量。在函数内部使用全局变量的时候,不能和其他语言一样直接使用,有两种使用方法:
//(1)用global关键字进行声明后使用
$a = 3;
function func()
{
global $a;
echo $a;
}
//(2)使用超全局变量数组$GLOBALS直接访问
$a = 3;
function func()
{
echo $GLOBALS['a'];
}
函数的参数
值传递和引用传递
//值传递:当一个变量的值赋予给另外一个变量的时候,改变其中一个变量的值,将不会影响到另外一个变量的值
//引用传递:新变量指向了原始变量,改动新的变量将影响到原始变量,反之亦然。(只有有名字的变量才能引用传递,比如表达式就不可以)
//注:在函数中传递参数的类型为对象时,即使不加&,也是引用传递,因为对象名对应的是该对象的引用地址。
$a = 4;
function func1($c) //值传递
{
$c = 7;
}
func1($a);
echo $a, "\n"; //4,函数没有改变$a的值
function func2(&$d) //引用传递
{
$d = 7;
}
func2($a);
echo $a, "\n"; //7,函数改变了$a的值
参数默认值
//如果$a和$b没有默认值,调用该函数的时候必须传值,否则会报错,如果有默认值,可以不传参数
function func($a = 3, $b = 5)
{
echo "a的值为{$a}, b的值为{$b}\n";
}
func();
可变参数列表
/*
*在函数定义时,形参可以省略不写,在函数内部可以通过系统方法获取传递进行的参数数组。
*func_num_args():传入函数实参的个数
*func_get_args():传入函数实参列表(数组形式)
*func_get_arg(index):传人函数具体位置的实参
*/
function fun6()
{
echo func_num_args(), "\n"; //3
print_r(func_get_args()); //数组
echo func_get_arg(0); //10
}
fun6(10, 11, 12);
传参类型限定
//函数定义时,可以给参数限定类型,共三种类型:array,object,callback
function func(array $a) //实参必须为数组类型
{
print_r($a);
}
//func(1); //会报错
func([1, 2, 3]);
复杂函数
可变函数
//将函数的名字赋值给变量,通过变量去调用函数,让函数的调用更具多样性
/*
* is_callable(函数):判断函数能否被调用
* function_exists(函数):判断函数是否存在
*/
function func()
{
echo 'hello, world', "\n";
}
$fun = 'func';
if (is_callable($fun)){ //判断是否能调用
echo '能调用', "\n";
$fun();
}
if (function_exists($fun)){
echo '能调用', "\n";
$fun();
}
函数的嵌套
/*
* php所有定义的函数,作用域都是全局的
*
* 和其他语言比如java相比,php不存在内置函数,意思就是说bar()不是foo()的内置函数,
* 两者没有区别,作用域都是全局的,在bar()函数内不能调用foo()中声明的变量,但是bar()
* 函数必须在foo()调用之后才会被定义,才能被调用
*
*/
function foo()
{
$a = 'hello, world';
function bar()
{
/* 不能调用变量$a */
echo 'bar()函数被调用';
}
/* 内部可以调用bar(),因为其已经被定义 */
//bar();
}
/* 现在不能调用bar(),因为其还没有被定义 */
foo();
/* 现在可以调用bar(),因为foo()调用之后,bar()已经被定义 */
bar();
递归调用:函数调用自己本身,递归里面需要有跳出递归的判断条件
匿名函数
/*
* 匿名函数
* 函数没有指定名称,称为匿名函数
* 通过将函数赋给变量,通过变量来实现调用函数
*/
$say = function($str) {
echo 'hello, world';
};
$say('aaa');
原文地址:https://www.cnblogs.com/jackw1/p/12580933.html
- RestTemplate的逆袭之路,从发送请求到负载均衡
- limit_area_cirle
- Spring RestTemplate中几种常见的请求方式
- 什么是客户端负载均衡
- jQuery 升级踩坑大全
- Eureka中的核心概念
- Spring Cloud Zuul中异常处理细节
- Spring Cloud Zuul中路由配置细节
- Spring Cloud中的API网关服务Zuul
- MYSQL | 企业整合解决方案之mysql集群搭建-主从配置
- Spring Cloud中Feign配置详解
- Spring Cloud中Feign的继承特性
- JavaScript 常用方法总结
- Spring Cloud中声明式服务调用Feign
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 硬核!IDEA 中使用 Git 完整入门教程!
- 神器你值得拥有——CoolFormat代码一键自动格式化工具,支持Verilog
- 一个简单现实案例挑战 PowerBI 水平测试 - 深度解析
- [译]使用DOT语言和GraphvizOnline来可视化你的ASP.NETCore3.0终结点01
- 探索 React 内核:深入 Fiber 架构和协调算法
- [经验]使用Keil MDK+Jlink-OB下载失败的解决办法
- ESP8266两种工作模式数据传输测试
- 『真香警告』这33个超级好用的CSS选择器,你可能见都没见过。
- [踩坑]STM32外部8M晶体不起振会有什么现象?
- 干掉 GuavaCache:Caffeine 才是本地缓存的王
- 美团数据怎么爬,看看这个文章吧!
- [硬件]关于SPI Flash那些你不知道的事儿
- 「新特性」Spring Boot 全局懒加载机制了解一下
- 做olap一定要要了解的Druid存储结构
- 【ST开发板评测】使用Python来开发STM32F411