foreach 对象引用

foreach $arr as $v, 如果$v是一个对象,则创建的是一个引用,不是拷贝建立新值。所以在一个function 里面 return $v, 在function 外修改了$v的值,会直接作用到$arr.

<?php
class A
{
public $a;
}
$t1 = new A;
$t1->a  = "test 1";
$t2 = new A;
$t2->a = "test 2";
$f = array($t1,$t2);
$i = 3;
foreach($f as $v)
{    
    $v->a = "test ".$i;
    $i++;
}
//print_r($f);

function test1($t1,$t2)
{

$f = array($t1,$t2);
print_r($f);
$i = 3;
foreach($f as $v)
{    
    $v->a = "test ".$i;
    $i++;
    return $v;
}

}
$t3 = test1($t1,$t2);
$t3->a ="test 7";
test1($t1,$t2);
?>


输出结果:

Array( [0] => A Object ( [a] => test 3 ) [1] => A Object ( [a] => test 4 ))Array( [0] => A Object ( [a] => test 7 ) [1] => A Object ( [a] => test 4 ))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值