PHP里的函数参数好神奇,可以让我们把东西交给函数处理。简单说,有两种传送方式:按值传和按引用传。举个例子,按值传就像是你把衣服给我,我穿上后,衣服还是你那件,没变;但如果用的是按引用传,我就可以直接修改你的衣服。今天咱们就来聊聊怎么玩转这个功能,还有怎么在实际编程中巧妙运用这两种方法哈。
默认的按值传递
你知道吗?在PHP里,给函数传递的参数就好比生活中去超市买东西,值才最重要。就拿increment()这个函数来说,它的本事可不小,能把给定的数翻个倍!
php functionincrement($number){ $number++; return$number; } $originalNumber=10; 给新数加点1,就变老了,放变量$newNumber里存着。 "原始数字是$originalNumber! ";//输出:OriginalNumber:10 新的数是:$newNumber结果出来!就是:11。
刚刚那个例子里头,我明明在`increment()`这函数里给`$number`添了点儿东西,但原来的`$originalNumber`却没啥变化。咋回事儿呀?其实就是因为我们只是把数字作为参数传进去的,所以里面怎么变都不影响外面~
通过引用传递参数
除了直接给数直输值外,PHP还有另一招传值绝活儿哦——就是在参数前添个’&’号。这样做,函数就可以直接操控原变量!下面就让我们通过实例来看看这是怎么回事吧:
那个叫incrementByReference的玩意儿,其实就是帮你把数加1。
给原数字加个1;
“原数字是$originalNumber:11。”
让我给你复习下`$originalNumber`被`incrementByReference()`函数接收的这个例子哈。你瞧见没,那`&`号摆在前头,这意味着我们其实并没有直接传递`$originalNumber`,而是它的“影子”。所以说,只要给`$number`加上什么,就是给`$originalNumber`加上什么
实战案例:表单验证中的应用
function increment($value) { $value++; } $number = 10; increment($number); echo $number; // 输出:10
用APP时经常要检查后才能上传信息,这个过程叫做表单验证。它就是看看我们填得对不对,有没出错。这个环节,有时候是通过数值传过去,有时候是通过引用传的。
咱们想想看,如果表格里面需要填写名字、邮箱和错误信息?检查的时候,我们一般的做法就是只传名字和邮箱给验证函数,但错误信息就有点麻烦了。因为名字和邮箱在验证的时候是固定不变的,但错误信息却可能会变,这样才能更准确地记录验证过程中的失败情况。
别说我没提醒你我们还得看看你填的姓名跟邮箱有没错。如果错了,后面那些麻烦的错误信息可就在$errors里面等着你
//验证姓名和邮箱
if(empty($name)){
$errors[]=”姓名不能为空”;
}
这不,如果电子邮箱地址不对的话,还是先弄好它再说!
$errors[]=”邮箱格式不正确”;
//其他验证规则…
//返回验证结果
returnempty($errors);
function incrementByReference(&$value) { $value++; } $number = 10; incrementByReference($number); echo $number; // 输出:11
//表单数据
$name=$_POST[‘name’];
$email=$_POST[’email’];
$errors=[];
//进行表单验证
确认无误,直接过关吧(名字跟邮箱都写对哟)。
function validateForm($data) { // 按值传递 $name = $data['name']; $email = $data['email']; if (empty($name)) { // 按引用传递,可以在函数外部修改 $data['errors'][] = '名称不能为空'; } if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $data['errors'][] = '无效的电子邮件地址'; } }
echo”表单验证通过”;
}else{
//输出错误信息
foreach($errorsas$error){
echo”$error
“;
就是说,这个例子里面,`validateForm()`函数是用名字啊、邮箱啊还有那个什么‘errormessages’数组当作参数的。名字和邮箱就是一般的变量,‘errormessages’,是用引用传递过去的。然后你懂的?就算在函数里改了它,外面还是看得见滴。这样一来,我们验证完表格之后,就可以直接显示错误消息咯~
总结
记住,学习PHP参数传递可不是闹着玩儿的,这关系到代码的稳定性和易维护性。在传递参数前,要思考下这个参数是否需要变动,然后决定到底该不该传。我们经常采用值传输方式,确保参数的不变性。当然,如果你觉得有必要,也可以试试引用传输,这样就可以直接修改原始数据了,有时候还是挺方便的。
学会用好函数参数,编程就变得轻松有趣又高效!平时写程序,得清楚什么时候该用什么参数传法来处理各种数据和逻辑。搞懂了这个,编写代码的效率自然飙升!
评论0