当前位置: 首页 > 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

相关文章:

PHP中关于func_get_args()方法

首先呢这个函数出现的是比较早的,大致应该是PHP4出现的, func_get_args — 返回一个包含函数参数列表的数组 说明 func_get_args(): array 获取函数参数列表的数组。 该函数可以配合 func_get_arg() 和 func_num_args() 一起使用,从而使得用户自定义函数可以接…...

EMA训练微调

就是取前几个epoch的weight的平均值,可以缓解微调时的灾难性遗忘(因为新数据引导,模型权重逐渐,偏离训练时学到的数据分布,忘记之前学好的先验知识) class EMA():def __init__(self, model, decay):self.…...

Kafka集群部署详细教程

版本说明 Ubuntu 18.04.6Zookeeper 3.5.9Kafka 2.7.0JDK8 集群配置 操作系统ip域名Zookeeper 端口Kafka 端口Ubuntu 18.04.6192.168.50.131kafka1.com21819092Ubuntu 18.04.6192.168.50.132kafka2.com21819092Ubuntu 18.04.6192.168.50.133kafka3.com21819092 安装 vim, cu…...

交叉编译

1. 交叉开发 交叉编译: 在电脑把程序编写 编译 调试好 再下载到嵌入式产品中运行 编译: gcc 之前编译环境和运行环境是一样的 交叉编译: 编译 把编译代码和运行分开 编译代码在虚拟机中 运行…...

数据结构与算法之递归: LeetCode 46. 全排列 (Typescript版)

全排列 https://leetcode.cn/problems/permutations/ 描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,…...

SQL中 JOIN 的两种连接类型:内连接(自然连接、自连接、交叉连接)、外连接(左外连接、右外连接、全外连接)

SQL中 JOIN 的两种连接类型:内连接(自然连接、自连接、交叉连接)、外连接(左外连接、右外连接、全外连接) 1. 自然连接(natural join)(内连接) 学生表 mysql> sele…...

微信小程序记住密码,让登录解放双手

密码是用户最重要的数据,也是系统最需要保护的数据,我们在登录的时候需要用账号密码请求登录接口,如果用户勾选记住密码,那么下一次登录时,我们需要将账号密码回填到输入框,用户可以直接登录系统。我们分别…...

国内划片机行业四大企业之博捷芯:技术驱动,领跑未来

在国内划片机行业中,公司以其卓越的技术实力和持续的创新精神,迅速崭露头角。作为国内划片机行业的四大企业之一,公司以其专业、高品质的划片机设备和解决方案,引领着行业的发展。 公司自创立以来,一直专注于划片机设备…...

后端整合Swagger+Knife4j接口文档

后端整合SwaggerKnife4j接口文档 接口文档介绍 什么是接口文档:写接口信息的文档,条接口包括: 请求参数响应参数 错误码 接口地址接口名称请求类型请求格式备注 为什么需要接口文档 who用?后端提供,前后端都需要使用…...

k8s中批量处理Pod应用的Job和CronJob控制器介绍

目录 一.Job控制器 1.简介 2.Jobs较完整解释 3.示例演示 4.注意:如上例的话,执行“kubectl delete -f myJob.yaml”就可以将job删掉 二.CronJob(简写为cj) 1.简介 2.CronJob较完整解释 3.案例演示 4.如上例的话&#xf…...

UE5 范围内随机生成

打开插件 BP_Actor...

杂记 | 使用Docker安装并配置MongoDB以支持事务(单副本,并解决了证书文件错误的问题)

文章目录 00 安装前的准备01 创建Docker Compose文件02 设置证书文件03 启动MongoDB04 初始化副本集和创建用户05 验证安装 00 安装前的准备 在开始之前,确保已经安装了Docker,本文基于Docker Compose进行示范,没有装Docker Compose也可将其…...

css三角,鼠标样式,溢出文字

目录 css三角 鼠标样式 例子:页码模块 溢出文字表示方式 margin负值运用 css三角强化 css三角 css三角中:line-height:0和font-size:0是防止兼容性的问题 jd {position: relative;width: 120px;height: 249px;background-…...

远程桌面访问MATLAB 2018B,提示License Manger Error -103,终极解决方案

通过远程桌面方位Windows Server系统下的MATLAB2018B,报错License Manger Error -103,Crack文件夹下的dll文件已经替换,同时也已经输出了lic文件,但是仍然无法打开。但是在本地桌面安装就没有问题。初步怀疑MATLAB的License使用机…...

Jmeter基础和概念

JMeter 介绍: 一个非常优秀的开源的性能测试工具。 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来。 从性能工具的原理划分: Jmeter工具和其他性能工具在原理上完全一致,工具包含4个部分: …...

【Linux 带宽限速】trickle,限制docker 上传速度

限制docker 上传速度 然而,你可以使用第三方工具来实现这个目的。一个常用的工具是 trickle,它可以模拟网络带宽。 首先,你需要安装 trickle。在 Ubuntu 上,可以使用以下命令安装: sudo apt-get install trickle然后…...

MindStudio学习记录三:推理应用开发 acl mindx sdk

1.推理应用流程 1.1.创建工程 1.2.模型转换 1.3代码开发 1.3.1ACL代码 1.3.2MindX SDK开发 可视化模块化设计 中间的图片与处理 是基于AIPP的可视化处理 1.5.编译 交叉编译 1.6.运行与调试 1.7 调优工具 profiling性能分析 2.开发举例 resnet-50 2.1 准备工程 2.2.准备模型…...

【RT-DETR改进】SIoU、GIoU、CIoU、DIoU、AlphaIoU等二十余种损失函数

一、本文介绍 这篇文章介绍了RT-DETR的重大改进,特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体,如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU,还融合了“Alpha”思想,创造了一系列新的损失函数。这些组合形式的…...

【Linux】EVIOCGBIT

EVIOCGBIT(ev, len) 该怎么理解? 我们可以推断出,它是一个宏,它的前两个参数已经确定了,具体的功能由后两个参数(ev,len)来决定。Linux-4.9.88\include\uapi\linux\input.h #define EVIOCGBIT(ev,len) _IOC(_IOC_READ, E, 0x20 …...

鸿蒙4.0开发笔记之ArkTS装饰器语法基础@Extend扩展组件样式与stateStyles多态样式(十一)

一、Extend扩展组件样式 1、作用 前文提到可以使用Styles用于样式的扩展,在Styles的基础上,ArkTS语法还提供了Extend,⽤于扩展原生组件样式,包括Text、Button等等。 2、定义语法 Extend(UIComponentName) function functionNam…...

Wan2.2-I2V-A14B惊艳效果:动态镜头推移、自然光影变化、流畅运镜展示

Wan2.2-I2V-A14B惊艳效果:动态镜头推移、自然光影变化、流畅运镜展示 1. 专业级视频生成能力 Wan2.2-I2V-A14B模型带来了令人惊叹的视频生成效果,能够将简单的文字描述转化为专业水准的动态视频。这个模型特别擅长处理复杂的镜头运动和光影变化&#x…...

告别抓瞎!手把手教你用Wireshark解密TLS 1.3流量(附SSLKEYLOGFILE环境变量配置)

从密文到明文:实战解密TLS 1.3流量的完整指南 当你在调试一个API接口时,发现请求总是返回异常状态码,但查看Wireshark抓包却只能看到一堆加密的TLS 1.3数据包,这种"睁眼瞎"的感觉确实令人沮丧。TLS 1.3作为目前最安全的…...

Manim进阶技巧:如何用Python代码制作复杂的数学动画

Manim进阶技巧:如何用Python代码制作复杂的数学动画 数学可视化是理解抽象概念的有力工具,而Manim作为3Blue1Brown开发的数学动画引擎,已经成为科研、教育和科普领域的首选工具。当你已经掌握了基础图形的创建和简单动画效果后,如…...

AI模型平台进入深水区:技术落地能力成胜负手

AI模型平台进入深水区:技术落地能力成胜负手 随着AI技术在各行业加速渗透,模型平台已成为企业智能化转型的关键基础设施。当前市场格局下,百度千帆、阿里ModelScope、华为ModelArts与新兴的模力方舟(MoArk)正在上演一场关于技术落地能力的终极…...

彻底解决AMD显卡风扇控制失效:FanControl ADLXWrapper初始化失败的终极修复指南

彻底解决AMD显卡风扇控制失效:FanControl ADLXWrapper初始化失败的终极修复指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcod…...

高数赋能编程:从理论到实战的跨界应用,你知道高等数学你一直学的是什么吗?

要理解高等数学在编程开发中的价值,首先需要解构一个普遍的学生困惑:“我学编程,为什么要学高数?” 事实上,高数不是孤立的抽象理论,而是现代计算机科学的思维基座和解决问题的工具库。 它从离散世界&…...

VSCode 自动更新问题解决记录

VSCode 自动更新问题解决记录 问题 今天发现 VSCode 的"帮助"菜单里没有「检查更新」选项,软件也不会自动提示新版本,每次都需要手动去官网下载更新。网上搜了一下,发现 VSCode 其实是支持自动更新的,但我的就是没有这个…...

典型的TCP客户端单次事务处理VI 通过已建立的TCP连接,发送一段数据(命令/字符串),等待设备响应后读取指定字节数的返回数据

这个VI程序框图详细解析(LabVIEW TCP通信事务VI)这是一个典型的TCP客户端单次事务处理VI(常命名为“TCP Send & Receive.vi”或“TCP通信子VI”)。 它的核心功能是:通过已建立的TCP连接,发送一段数据&a…...

HunyuanVideo-Foley保姆级教程:Docker Compose编排WebUI+API+Redis缓存

HunyuanVideo-Foley保姆级教程:Docker Compose编排WebUIAPIRedis缓存 1. 环境准备与快速部署 在开始之前,请确保您的硬件配置满足以下要求: 显卡:RTX 4090/4090D 24GB显存内存:≥120GBCPU:10核及以上磁盘…...

Flutter地图集成与跨平台定位从0到1:3大平台配置+5个避坑指南

Flutter地图集成与跨平台定位从0到1:3大平台配置5个避坑指南 【免费下载链接】flutter_amap A Flutter plugin use amap.高德地图flutter组件 项目地址: https://gitcode.com/gh_mirrors/fl/flutter_amap 在移动应用开发中,地图集成和定位服务是许…...