PHP的实参在传递过程中是顺序传递的,不支持指定参数名传递。怎么理解呢?看下面的代码:
function test($name,$age){
echo '姓名:'.$name,' 年纪:'.$age;
}
test('weixin',23); // 姓名:weixin 年纪:23
test($name='weixin',$age=23); // 姓名:weixin 年纪:23
test($age=23,$name='weixin'); // 姓名:23 年纪:weixin
笔者有时也会写写python,而python是支持指定参数名传递的,看如下代码:
def test(name,age):
print('姓名:'+name+' 年级:'+str(age))
test('weixin',23) // 姓名:weixin 年级:23
test(name='weixin',age=23) // 姓名:weixin 年级:23
test(age=23,name='weixin') // 姓名:weixin 年级:23
有时候一时没有反应过来就进坑了。不过也很奇怪PHP的这种设计,可能对于PHP的解释器来说,它把"$age=23"理解成将这个表达式的结果赋值给函数的第一个形参,因为我们知道赋值表达式的返回值是等号右边的值,因此就有了上面$name的值为表达式"$age=23"的返回值,即23。