关于PHP函数传参的注意点

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。

猜你喜欢

转载自blog.csdn.net/wx145/article/details/82685519