有关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
?>

 

 

posted @ 2011-11-18 23:42  再快一点  阅读(168)  评论(0编辑  收藏  举报