zoukankan      html  css  js  c++  java
  • 有关PHP引用

    1. 引用不能被传递

    <?php 
    $a=1;
    $b=&$a;
    $c=$b;
    $c=99;
    echo $a;   // 1
    ?>


    2.如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回,则会自动创建该变量。

    <?php
    function foo(&$var) { }

    foo($a); // $a is "created" and assigned to null

    $b = array();
    foo($b['b']);
    var_dump(array_key_exists('b', $b)); // bool(true)

    $c = new StdClass;
    foo($c->d);
    var_dump(property_exists($c, 'd')); // bool(true) 
    ?>

    3.有关global

    <?php
    $var1 = "Example variable";
    $var2 = "";

    function global_references($use_globals)
    {
        global $var1$var2;
        if (!$use_globals) {
            $var2 =& $var1// visible only inside the function
        } else {
            $GLOBALS["var2"] =& $var1// visible also in global context
        }
    }

    global_references(false);
    echo "var2 is set to '$var2'\n"; // var2 is set to ''
    global_references(true);
    echo "var2 is set to '$var2'\n"; // var2 is set to 'Example variable'
    ?> 

    //把 global $var; 当成是 $var =& $GLOBALS['var']; 的简写。从而将其它引用赋给 $var 只改变了本地变量的引用。  

     3.如果在 foreach 语句中给一个具有引用的变量赋值,被引用的对象也被改变。

    <?php
    $ref = 0;
    $row =& $ref;
    foreach (array(1, 2, 3) as $row) {
        // do something
    }
    echo $ref// 3 - last element of the iterated array
    ?>
  • 相关阅读:
    JAVA嵌入运行Groovy脚本
    git撤销本地所有未提交的更改
    Java连接S3并上传Redis
    jython笔记
    Elasticsearch 5.2.x 使用 Head 插件连接不上集群
    elasticsearch 5.1 别的机器无法访问9200端口
    elasticsearch,http://ip:9200访问不到的解决办法
    在centos7中安装nodejs(npm )
    java标识符和关键字
    Java平台
  • 原文地址:https://www.cnblogs.com/mxw09/p/2254752.html
Copyright © 2011-2022 走看看