������ʲô

PHP ����������������������ָ��ͬһ�����ݡ���˼�ǣ���������ʱ��

<?php
$a 
=& $b;
?>
����ζ�� $a �� $b ָ����ͬһ��������

Note:

$a �� $b ����������ȫ��ͬ�ģ��Ⲣ���� $a ָ���� $b �����෴������ $a �� $b ָ����ͬһ���ط���

Note:

����������õ����鱻��������ֵ���������á��������鴫ֵ������Ҳ����ˡ�

Note:

�����һ��δ����ı����������ø�ֵ�����ò������ݻ����÷��أ�����Զ������ñ�����

Example #1 ��δ����ı���ʹ������

<?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)
?>

ͬ�����﷨�������ں����У����������ã��Լ����� new ������У�PHP 4.0.4 �Լ��Ժ�汾����

<?php
$bar 
=& new fooclass();
$foo =& find_var($bar);
?>
�� PHP 5 ��new �Զ��������ã�����ڴ�ʹ�� =& �Ѿ���ʱ�˲��һ���� E_STRICT �������Ϣ��

Note:

���� & ��������¶���������һ������������������� $this�����������ڸ��൱ǰ��ʵ����û���� & �ĸ�ֵ���������ʵ����������󣩲��� $this ����������������ϣ��Ⲣ��������Ҫ�Ľ�����������ܺ��ڴ����ĵ����⣬ͨ��ֻ�빤����һ��ʵ�����档

���ܿ����� @ ��������������캯���е��κδ�����Ϣ�������� @new������ &new ���ʱ�ⲻ��Ч�������� Zend �����һ�����Ʋ��һᵼ��һ����������

Warning

�����һ�������ڲ���һ������Ϊ global �ı�������һ�����ã�������ֻ�ں����ڲ��ɼ�������ͨ��ʹ�� $GLOBALS ���������һ�㡣

Example #2 �ں���������ȫ�ֱ���

<?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 ֻ�ı��˱��ر��������á�

Note:

����� foreach ����и�һ���������õı�����ֵ�������õĶ���Ҳ���ı䡣

Example #3 ������ foreach ���

<?php
$ref 
0;
$row =& $ref;
foreach (array(
123) as $row) {
    
// do something
}
echo 
$ref// 3 - last element of the iterated array
?>

�������ĵڶ������������ô��ݱ���������ͨ���ں����ڽ���һ�����ر������Ҹñ����ں��з�Χ��������ͬһ��������ʵ�ֵġ����磺

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

$a=5;
foo($a);
?>
��ʹ $a ��� 6��������Ϊ�� foo �����б��� $var ָ���˺� $a ָ���ͬһ�����ݡ�������ϸ���ͼ����ô�����

�������ĵ������������÷�����