php函数返回引用示例
<?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函数返回引用示例的更多相关文章
- PHP 函数的“引用返回”概念释疑(转)
很多时候我们会看到这样的代码(出自 CI 框架源码): 1 $class =& load_class('a','b'); 我们都知道其中的'&'是指引用,但是它的作用是什么呢?它能够解 ...
- c++ 函数返回研究[转]
一,c++函数的返回分为以下几种情况 1)主函数main的返回值:这里提及一点,返回0表示程序运行成功. 2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象.用函数返回值初始化临时对 ...
- c++中返回对象与返回引用的区别
这几天在做用C++做课程设计,对其返回对象的实现感到迷惑. 通过对汇编代码的分析,可以清楚的看到,直接返回引用和返回对象的区别到底是什么. 分析的程序如下 #include<cstdio> ...
- C++函数返回值(02)
对象作为返回值 编译器会将函数栈中的返回值数据拷贝到返回栈中 指针作为返回值 函数的返回值可以是存储某种类型数据的内存地址,称这种函数为指针函数.它们的一般定义形式如下: 类型标识符 *函数名(参数 ...
- PHP引用(&)初探:函数的引用返回
函数的引用返回 先看代码: <?php function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } ...
- C++返回引用的函数
要以引用返回函数值,则函数定义时的格式如下: 类型标识符&类型名 (形参列表及类型说明) { 函数体 } 用const限定引用的声明方式为: const 类型标识符&引用名=目标变量名 ...
- PHP获取函数返回值的引用
通过在函数前添加&可以获取函数返回值的引用,如:function &test(){return 10;}
- C++引用和函数返回值
这是老师上课讲的内容,现在把它写下来,一方面当做复习,另一方面真的想学点东西.废话不多说,先贴上测试的代码: #include <iostream.h> float temp; float ...
- C++引用形参,函数返回多个值
之前编代码有遇到过想让一个函数返回多个值的情况,low low的我不知道有什么办法,直接使用的全局变量将函数里的值传出去. 今天看书,<C++primer>第五版中文版第189页:使用引用 ...
随机推荐
- 歌曲播放页面的数据vuex管理
1.state.js import {playMode} from '@/common/js/config' const state = { singer:{}, playing:false, ful ...
- Windows下GUI编程——窗口
windows下创建一个基于GUI的窗口程序很简单,使用MFC或者Win32 API都可以实现.本文简单整理下windows API创建GUI应用程序的基本编码框架. 比较常见的窗口包括:桌面窗口.应 ...
- Windows 安装 setuptools 和 feedparser
一.安装setuptools: 页面: https://pypi.python.org/pypi/setuptools#downloads 1.下载该zip文件,解压,例如:C:\setuptools ...
- Python(六)之文件对象
Python文件对象 明确文件系统: 获取文件对象: var_name = open(file_name[mode,[bufsize]]) 缓冲: 0:禁用 1:使用缓冲,只缓冲一行数据 2+:指定缓 ...
- Android开发(二十)——Fragment中的touch事件
问题: Fragment中没有提供监听touch事件的方法. 解决方案: Activity中能够监听touch事件. 于是在Activity中写一个接口,MyOnTouchListener,在需要监听 ...
- RabbitMQ中各种消息类型如何处理?
一:消息类型 Map String(含json字符串类型) 二:处理方法 2.1 Map消息 如果发送的消息类型是map类型,可以通过SerializationUtils.deserialize方法将 ...
- Pandas.plot 做图 demo(scatter,bar,pie)
#coding:utf-8import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimH ...
- Java 开发中的对象拷贝
前言 在 Java 开发中,很多时候需要将两个属性基本相同的对象进行属性复制,比如 DO 转 VO等等. 本文主要介绍自己实现的简易拷贝工具类与 Spring 提供的属性拷贝的对比. Spring 提 ...
- 【WPF】右键菜单ContextMenu可点击区域太小的问题
问题描述 正常使用右键菜单ContextMenu时,如果菜单项是不变的,可以直接在XAML中写死,如下是给一个Button按钮添加了右键菜单功能. <Button Content="T ...
- docker安装及加速配置
需要centos7版本,内核版本不低于3.10 [root@localhost ~]# uname -r3.10.0-514.el7.x86_64 第一步:更新当前软件:[root@localhost ...