php函数返回引用示例

本文通过一个PHP类的实例展示了如何使用引用返回数组元素,并在后续操作中修改这些元素。通过对用户缓存数组的初始化、展示及修改过程,详细解释了PHP中引用的使用方法及其对数组操作的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?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
)

  

  

转载于:https://www.cnblogs.com/joeblackzqq/p/5106394.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值