php可变参数可以取得具体的参数名称吗
比如:
function test($data,...$params){
var_dump($params);
}
$data = ['test'=>'test'];
$a = 1;
$b = 2;
$c = 3
test($data,$a,$b,$c);
现在打印出来的是
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
有什么办法可以取得参数名吗?变成下面这种
array(3) { ['a']=> int(1) ['b']=> int(2) ['c']=> int(3) }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
php 层面上 应该是不可以的,将对应值赋值给变量,然后变量传递给形参,此时和变量名是没有关系的
fun_info('strlen'); //支持对某个函数进行分析.
给出的代码,其实只是表示了位置参数
需要参数名称的需求,实质上是要非数字类型键的关联数组
在
python
中称之为关键字参数,用字典/映射dict
类型表示php 函数体内查看与之相关的参数方法有
func_num_args( void )
返回传递给当前函数的参数个数mixed func_get_arg ( int $arg_num )
返回指定的参数array func_get_args ( void )
返回参数列表如果你想获取参数名,传由变量名和变量值组成的关联数组就是了,像下面这样
像上面这种参数操作,
Yii
在构造函数中配置行为,事件操作也是给数组,结合参数个数感知,位置灵活变动。至于反射,在函数级别没必要,看看laravel
的助手函数,你会发现似曾相识。如果你一定要这样做的话,也不是不可以。
首先使用
debug_backtrace()
拿到调用栈,array_shift()
取出来,拿到文件,然后把文件交给php-parser
找到调用的位置,就可以通过php-parser
拿到了。上面的代码输出就像这样:
当然,这只是实现的一种思路,如果要用到业务中,还是做好多方面的测试工作,以免出现意外情况。