php_lang_ref:Language Reference >> References Explained >> What References Are Not

<?php
// +----------------------------------------------------------------------
// | Created by im-server.
// +----------------------------------------------------------------------
// | Language Reference >> References Explained >> What References Are Not
// +----------------------------------------------------------------------
// | Author: alexander <gt199899@gmail.com>
// +----------------------------------------------------------------------
// | Datetime: 2017-07-16 17:30
// +----------------------------------------------------------------------
// | Perfect Is Shit
// +----------------------------------------------------------------------

/**
 * 引用不是指针,所以不能实现case1中的情况;
 * case1
 * case2
 */

namespace case1;
function foo(&$var)
{
    $var = &$GLOBALS["baz"];
    return $var;
}

$baz = 0;
$bar = 1;
$foo = foo($bar);
var_dump($foo);
/**
 * 分析上面代码
 *  第一步:$bar通过引用传递到函数foo中的$var,所以$bar和$var指向同一个内容;
 *  第二步:函数foo中的$var又和$GLOBALS["baz"]指向同一个内容,此时$var的值变为0;
 * 原因为
 * 输出:
 * int(0)
 */

namespace case2;
function foo(&$var)
{
    $GLOBALS["baz"] = &$var;
    return $var;
}

$baz = 0;
$bar = 1;
$foo = foo($bar);
var_dump($baz);
/**
 * 将$GLOBALS["baz"]和$var都指向了$var的内容,所以输出为$bar的内容1;
 * 输出:
 * int(1)
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值