<?php

class Test
{
public $userCache; public function init()
{
for($i = 0; $i < 5; $i++)
{
$user = array(
'name' => "joe$i",
'age' => 23 + $i,
);
$this->userCache[] = $user;
}
} public function displayArray($arr = '')
{
if( gettype($arr) !== 'array' )
$arr = $this->userCache; foreach($arr as $k => $v)
{
echo "$k: ";
print_r($v);
echo "\n";
}
} public function &getUser($uid) // 函数返回引用
{
if( isset($this->userCache[$uid]) )
{
return $user = &$this->userCache[$uid]; // $user取引用(此处不能断)
}
else
{
echo "create a new user:\n";
$user = array('name'=>'xxy', 'age'=>66);
$this->userCache[$uid] = $user;
return $user = &$this->userCache[$uid];
}
} public function modifyUser($uid)
{
//$user = $this->getUser($uid); // 非引用调用
$user = &$this->getUser($uid); // 引用调用
$this->displayArray($user); echo "------------------\n";
$user['name'] = 'jjoe'; // 修改返回值
$this->displayArray($user);
$this->displayArray(); // 这里可看到被引用的对象值已被修改
} } $a = new Test();
$a->init();
$a->modifyUser(12);

  

运行结果:

[zcm@vm-fedora20 server]$ php test.php
create a new user:
name: xxy
age: 66
------------------
name: jjoe
age: 66
0: Array
(
[name] => joe0
[age] => 23
) 1: Array
(
[name] => joe1
[age] => 24
) 2: Array
(
[name] => joe2
[age] => 25
) 3: Array
(
[name] => joe3
[age] => 26
) 4: Array
(
[name] => joe4
[age] => 27
) 12: Array
(
[name] => jjoe
[age] => 66
)

  

  

php函数返回引用示例的更多相关文章

  1. PHP 函数的“引用返回”概念释疑(转)

    很多时候我们会看到这样的代码(出自 CI 框架源码): 1 $class =& load_class('a','b'); 我们都知道其中的'&'是指引用,但是它的作用是什么呢?它能够解 ...

  2. c++ 函数返回研究[转]

    一,c++函数的返回分为以下几种情况 1)主函数main的返回值:这里提及一点,返回0表示程序运行成功. 2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象.用函数返回值初始化临时对 ...

  3. c++中返回对象与返回引用的区别

    这几天在做用C++做课程设计,对其返回对象的实现感到迷惑. 通过对汇编代码的分析,可以清楚的看到,直接返回引用和返回对象的区别到底是什么. 分析的程序如下 #include<cstdio> ...

  4. C++函数返回值(02)

    对象作为返回值 编译器会将函数栈中的返回值数据拷贝到返回栈中 指针作为返回值 函数的返回值可以是存储某种类型数据的内存地址,称这种函数为指针函数.它们的一般定义形式如下:  类型标识符 *函数名(参数 ...

  5. PHP引用(&)初探:函数的引用返回

    函数的引用返回 先看代码: <?php function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } ...

  6. C++返回引用的函数

    要以引用返回函数值,则函数定义时的格式如下: 类型标识符&类型名 (形参列表及类型说明) { 函数体 } 用const限定引用的声明方式为: const 类型标识符&引用名=目标变量名 ...

  7. PHP获取函数返回值的引用

    通过在函数前添加&可以获取函数返回值的引用,如:function &test(){return 10;}

  8. C++引用和函数返回值

    这是老师上课讲的内容,现在把它写下来,一方面当做复习,另一方面真的想学点东西.废话不多说,先贴上测试的代码: #include <iostream.h> float temp; float ...

  9. C++引用形参,函数返回多个值

    之前编代码有遇到过想让一个函数返回多个值的情况,low low的我不知道有什么办法,直接使用的全局变量将函数里的值传出去. 今天看书,<C++primer>第五版中文版第189页:使用引用 ...

随机推荐

  1. VS2013 未找到与约束ContractName ...

    控制面板>程序>程序和功能 找到如下选中软件右击修复 即可 需关闭VS2013 参考:http://blog.csdn.net/zhaoyun927/article/details/298 ...

  2. 集成 IBM Business Process Manager V8 与企业内容管理系统

    连接:http://www.ibm.com/developerworks/cn/bpm/bpmjournal/1212_ramos/1212_ramos.html 集成 IBM Business Pr ...

  3. 微服务之springCloud-docker-comsumer(三)

    简介  上一节,我们讲了创建spring cloud生产者,并利用docker-compose部署到swarm集群中,这节我们讨论一下最restTemlate调用生产者服务 一.创建模块(micros ...

  4. RedHat 6 yum 使用网易源

    . . . . . 刚装好了 RedHat 6 系统,但是使用 yum 的时候总是提示 nothing to do,并且什么都做不了.后来经过一番搜索才知道,红帽的 yum 在线更新是收费的,而且必须 ...

  5. C语言 · 排列数 · 排列式

    蓝桥练习场上不断碰到类似的题,都是一个递归搜索的套路. 算法提高 排列数   时间限制:1.0s   内存限制:256.0MB      问题描述 0.1.2三个数字的全排列有六种,按照字母序排列如下 ...

  6. log_bin_trust_function_creators

    log_bin_trust_function_creators错误解决 当有mysql本地或远程建立function或procedure时报上面的错误 或者如果开启了二进制日志,但是用户没有suppe ...

  7. 【linux】——ubuntu12.04 下安装wine和wine乱码解决方案

    ————————安装最新ppa的wine———————— sudo add-apt-repository ppa:ubuntu-wine/ppa sudo apt-get update sudo ap ...

  8. es cat http://localhosts:9002/_cat/nodes?v

    http://localhosts:9002/_cat/nodes?v&h=http,version,jdk,disk.total,disk.used,disk.avail,disk.used ...

  9. JDBC setCatalog

    数据库URL:jdbc:mysql://localhost:3306/{catalog} catalog指代数据库名称. 1如果该参数不存在,则必须使用setCatalog设置数据库名称,否则会抛出 ...

  10. WebRTC 学习资源 电子书 WebRTC权威指南 Learning WebRTC

    webRTC源码下载地址:https://pan.baidu.com/s/18CjClvAuz3B9oF33ngbJIw 提取码:wl1e 1.<WebRTC权威指南>第三版 中文版 本书 ...