PHP函数func_num_args、func_get_arg、func_get_args的用法

6 篇文章 0 订阅
函数名作用
func_num_args返回函数参数数量
func_get_arg从0开始返回函数参数传入的值
func_get_args返回函数所有参数的一个数组

 

 

 


 

<?php
function concat(){
    echo func_num_args();
    echo PHP_EOL;
    echo func_get_arg(2);
    echo PHP_EOL;
    print_r(func_get_args());

}
concat("hello","world","gax")

?>

output:

3
gax
Array
(
    [0] => hello
    [1] => world
    [2] => gax
)

 

在C语言中,你可以定义一个结构体`FunctionInfo`来存储函数名和函数指针,然后创建一个这样的结构体数组`func_dict`。下面是一个示例代码: ```c #include <stdio.h> #include <string.h> typedef enum { ID_A, ID_B, ID_C } FunctionID; // 定义函数指针类型 typedef void (*FunctionType)(int, char, bool, char); // 结构体定义 struct FunctionInfo { FunctionID id; FunctionType func; }; // 实现的函数 void func_A(int param) { printf("func_A called with int parameter: %d\n", param); } void func_B(int param1, char param2) { printf("func_B called with int and char parameters: %d, '%c'\n", param1, param2); } void func_C(char param1, bool param2, char param3) { printf("func_C called with char, bool, and char parameters: '%c', %d, '%c'\n", param1, param2 ? 1 : 0, param3); } // 动态初始化函数表 const struct FunctionInfo func_dict[] = { { ID_A, func_A }, { ID_B, func_B }, { ID_C, func_C } }; // 根据函数ID调用相应的函数 void call_function(FunctionID id, ...) { va_list args; // 变长参数列表 va_start(args, id); // 初始化参数指针 if (id == ID_A) { int param = va_arg(args, int); // 从参数列表获取整数参数 func_dict[id].func(param); // 调用对应函数 } else if (id == ID_B) { int param1 = va_arg(args, int); char param2 = va_arg(args, char); func_dict[id].func(param1, param2); } else if (id == ID_C) { char param1 = va_arg(args, char); bool param2 = va_arg(args, bool); char param3 = va_arg(args, char); func_dict[id].func(param1, param2, param3); } va_end(args); // 清理参数指针 } int main() { call_function(ID_A, 10); // 调用func_A call_function(ID_B, 20, 'a'); // 调用func_B call_function(ID_C, 'b', true, 'c'); // 调用func_C return 0; } ``` 在这个例子中,`call_function`函数使用变长参数列表`va_list`来接受不同数量的参数,然后根据函数ID找到对应的函数并调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值