• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 详解php中函数的引用传递和返回 (附代码)

详解php中函数的引用传递和返回 (附代码)

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了php函数引用,函数传递和返回等相关知识,希望对您有所帮助

本篇文章带大家了解一下php的引用,详细介绍一下函数的引用传递和引用返回。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。


详解php中函数的引用传递和返回 (附代码)


php的引用(就是在变量或者函数、对象等前面加上&符号)

在PHP 中引用的意思是:不同的名字访问同一个变量内容。

与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容,在内存中存放的地址。

1、变量的引用

PHP 的引用允许你用两个变量来指向同一个内容

<?php    $a = 'abc';    $b = &$a;    var_dump($a,$b);//均为'abc'    $b = 123;    var_dump($a,$b);//均为123

2、函数的引用传递(传址调用)

<?php    function test(&$a){        $a = $a + 100;    }    $b = 1;    test($b);    var_dump($b);//101

这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值

注意:上面的“ test($b); ” 中的$b前面不要加 & 符号,但是在函数“call_user_func_array”中,若要引用传参,就得需要 & 符号

<?php    function test(&$a){        $a = $a + 10;    }    $b = 1;    call_user_func_array('test',array(&$b));    var_dump($b);//11

3、函数的引用返回

function &test(){    static $b=0;//申明一个静态变量    $b=$b+1;    echo $b;    return $b;}$a=test();//这条语句会输出 $b的值 为1$a=5;$a=test();//这条语句会输出 $b的值 为2$a=&test();//这条语句会输出 $b的值 为3$a=5;$a=test();//这条语句会输出 $b的值 为6

通过这种方式$a=test();得到的其实不是函数的引用返回,这跟普通的函数调用没有区别。$a=test()方式调用函数,只是将函数的值赋给$a而已,而$a做任何改变都不会影响到函数中的$b而通过$a=&test()方式调用函数呢, 他的作用是将return $b中的$b变量的内存地址与$a变量的内存地址指向了同一个地方。

这里是为了让大家理解函数的引用返回才使用静态变量的,其实函数的引用返回多用在对象中:

class talker{private $data = 'Hi';    public function &get(){        return $this->data;    }    public function out(){        echo $this->data;    }}$aa = new talker();$d = &$aa->get();$aa->out();$d = 'How';$aa->out();$d = 'Are';$aa->out();$d = 'You';$aa->out(); //输出为HiHowAreYou



分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解php中函数的引用传递和返回 (附代码)

相关文章

  • 2022-04-29手把手带你了解Vue中怎么使用filters过滤器?2种用法浅析
  • 2022-04-29四种Laravel ORM开启created_at的方法
  • 2022-04-29javascript怎么判断是否为null
  • 2022-04-29织梦cms二次开发普通会员隐藏/VIP会员显示
  • 2022-04-29PHPCMSV9单次最多只能上传10个附件的解决方法
  • 2022-04-29CDR快速制作质感立体字
  • 2022-04-29DEDECMS LOOP标签的用法及调用
  • 2022-04-29PhotoShop打造五彩抽象透明的圆球形图标制作教程
  • 2022-04-29PHP实现长轮询消息实时推送功能代码实例讲解
  • 2022-04-29技术教程:如何安装ioncube扩展

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • CSS实现禁止页面文字被选中功能
    • Photoshop制作银色质感的金属字教程
    • 聊聊在Angular项目中怎么实现权限控制?
    • jQuery对象怎么转为html dom对象
    • 12点网站优化实战经验分享
    • 浅谈php正则替换函数preg_replace的用法
    • Discuz“密码错误次数过多,请15分钟后登陆”
    • 苹果CMSv10批量删除视频数据方法
    • 详解Angular中的NgModule(模块)
    • 关键词meta标签Keywords优化详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有