PHP学习之PHP赋值方式

方式一:传值赋值

变量总是传值赋值。当将一个表达式的值赋予一个变量时,整个原始表达式的值就被赋值到目标变量(如: $foo = 'Bob'; $bar = $foo),当一个变量的值赋予另一个变量时,改变其中一个变量的值,将不会影响到另外一个变量 。

示例:
<!-- lang: php -->
<?php 
<!-- lang: php -->
    $foo = 'Bob'
<!-- lang: php -->
    $bar = $foo;    //传值赋值
<!-- lang: php -->
    echo $foo;    //输出 Bob
<!-- lang: php -->
    echo $bar;    //输出 Bob
<!-- lang: php -->
    $foo = 'Tom';    //改变$foo的值
<!-- lang: php -->
    echo $foo;    //输出 Tom
<!-- lang: php -->
    echo $bar;    //输出Bob
<!-- lang: php -->
?>

方式二:引用赋值

引用赋值意味着新的变量简单地引用(换言之”成为其别名“或者”指向“)了原始变量。改动新的变量将影响到原始变量,反之亦然。这同样意味着其中没有执行复制操作,因而这种赋值操作更加快速。不过只有在密集的循环中或者对很大的数组或对象赋值时才有可能注意到速度的提升。使用引用赋值,简单地将一个&符号加到将要赋值的变量前(源变量)

示例:
<!-- lang: php -->
<?php 
<!-- lang: php -->
    $foo = "Bob"    //将字符串"Bob"赋值给变量$foo
<!-- lang: php -->
    $bar = &$foo;    //将变量$foo引用赋值给变量$bar
<!-- lang: php -->

<!-- lang: php -->
    $bar = "Tom";    //改变变量$bar的值
<!-- lang: php -->
    echo $bar;    //输出 Tom
<!-- lang: php -->
    echo $foo;    //输出 Tom
<!-- lang: php -->
    
<!-- lang: php -->
    $foo = "Mary";    //改变变量$foo的值
<!-- lang: php -->
    echo $foo;    //输出 Mary
<!-- lang: php -->
    echo $bar;    //输出 Mary
<!-- lang: php -->
?>

注意问题:
(1)只有有名字的变量才可以引用赋值
(2)PHP的引用并不是像C语音中的地址指针。例如,在表达式$bar = &$foo中,不会导致$bar和$foo在内存上同体,只是把各自的值相关联起来。基于这一点,使用unset()则不会导致所有引用变量消失。

示例:
<!-- lang: php -->
<?php 
<!-- lang: php -->
    $foo = 25;
<!-- lang: php -->
    $bar = &$foo;    //这是一个有效的引用赋值
<!-- lang: php -->
    $bar = &(24 * 7);    //此引用赋值无效,不能将表达式作为引用赋值
<!-- lang: php -->

<!-- lang: php -->
    function test(){
<!-- lang: php -->
        return 25;
<!-- lang: php -->
    }
<!-- lang: php -->

<!-- lang: php -->
    $bar = &test();    //此引用赋值也无效,也是没有名字的变量;
<!-- lang: php -->
    
<!-- lang: php -->
    $foo = test();
<!-- lang: php -->
    $bar = &$foo;    //这是一个有效的引用赋值
<!-- lang: php -->
    unset($foo);
<!-- lang: php -->
    echo $bar;    //输出 25,
<!-- lang: php -->
//说明执行unset后,$bar和$foo仅仅是相互取消值关联,$bar并没有因为$foo的释放而消失。
<!-- lang: php -->
?>

转载于:https://my.oschina.net/syc2013/blog/176019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值