当前位置: 首页 > news >正文

PHP中关于func_get_args()方法

首先呢这个函数出现的是比较早的,大致应该是PHP4出现的,

func_get_args — 返回一个包含函数参数列表的数组

说明 ¶

func_get_args(): array

获取函数参数列表的数组。

该函数可以配合 func_get_arg() 和 func_num_args() 一起使用,从而使得用户自定义函数可以接受自定义个数的参数列表。

参数 ¶

此函数没有参数。

返回值 ¶

返回一个数组,其中每个元素都是目前用户自定义函数的参数列表的相应元素的副本。

错误/异常 ¶

在用户自定义函数外调用则会出现错误警告。

上面是官方给出的定义和解释:其中还有一段是PHP8采用这个函数需要注意的

注意:

As of PHP 8.0.0, the func_*() family of functions is intended to be mostly transparent with regard to named arguments, by treating the arguments as if they were all passed positionally, and missing arguments are replaced with their defaults. This function ignores the collection of unknown named variadic arguments. Unknown named arguments which are collected can only be accessed through the variadic parameter.

也就是说这个func_家族的函数,不会接受一些变长参数的内容,我举个例子你就会很明白了:

______________________________________________________________________________________________

我在这个例子中又使用了命名参数,我们来看结果:

1-我传递值的顺序是value2,value1,根据运行结果来看:func_get_args()是不区分位置参数和命名参数的,所以这反过来说它又是比较灵活的.

2-不能输出value3,value4 说明func_get_args()不能接收变长参数的集合的

它的使用场景:适用于处理不定数量的参数,无需知道参数的具体数量或类型。这个函数在PHP 5.6版本之前,它是用于获取函数内部所有传递给函数的参数的主要手段,因为当时还没有引入变长参数,命名参数等这样更为灵活和直观的语法。

当然使用 func_get_args() 函数获取参数的方式通常用于处理不定数量的参数或者在函数签名中不明确指定参数的情况。当然现在更推荐用变长参数的方式去这种情况, 但是在已知参数数量且参数有明确的含义的情况下,直接在函数签名中声明参数是更为推荐的做法。这样的声明方式更直观,有助于代码的理解和维护。

顺便说一下,比如PHP中的var_dump(),printf()我们经常是不是用到的就是这种函数,他们都接受一个变长参数,

 
function var_dump(mixed $value, mixed ...$values): void {}
//来自PHP标准_2
function printf(string $format, mixed ...$values): int {}
//来自PHP标准_2
http://www.lryc.cn/news/248250.html

相关文章:

  • EMA训练微调
  • Kafka集群部署详细教程
  • 交叉编译
  • 数据结构与算法之递归: LeetCode 46. 全排列 (Typescript版)
  • SQL中 JOIN 的两种连接类型:内连接(自然连接、自连接、交叉连接)、外连接(左外连接、右外连接、全外连接)
  • 微信小程序记住密码,让登录解放双手
  • 国内划片机行业四大企业之博捷芯:技术驱动,领跑未来
  • 后端整合Swagger+Knife4j接口文档
  • k8s中批量处理Pod应用的Job和CronJob控制器介绍
  • UE5 范围内随机生成
  • 杂记 | 使用Docker安装并配置MongoDB以支持事务(单副本,并解决了证书文件错误的问题)
  • css三角,鼠标样式,溢出文字
  • 远程桌面访问MATLAB 2018B,提示License Manger Error -103,终极解决方案
  • Jmeter基础和概念
  • 【Linux 带宽限速】trickle,限制docker 上传速度
  • MindStudio学习记录三:推理应用开发 acl mindx sdk
  • 【RT-DETR改进】SIoU、GIoU、CIoU、DIoU、AlphaIoU等二十余种损失函数
  • 【Linux】EVIOCGBIT
  • 鸿蒙4.0开发笔记之ArkTS装饰器语法基础@Extend扩展组件样式与stateStyles多态样式(十一)
  • 5V摄像机镜头驱动IC GC6208,可用于摄像机,机器人等产品中可替代AN41908
  • PHP echo和print 语句
  • ThinkPHP6.1 多应用模式的一些事儿
  • redis-cluster集群模式
  • 带你用uniapp从零开发一个仿小米商场_10. 首页开发
  • 常使用的定时任务
  • 【人工智能Ⅰ】实验2:遗传算法
  • Hadoop集群升级(3.1.3 -> 3.2.4)
  • (一)基于高尔夫优化算法GOA求解无人机三维路径规划研究(MATLAB)
  • ESP32-Web-Server编程-建立第一个网页
  • csgo/steam游戏搬砖项目的五大认知误区