| |
 |
|
 |
网友评论
 |
|
 |
 |
网友:
xiaofeng1982 | 时间:2007-06-05 19:48:44 IP地址:211.96.69.★ |
|
|
|
传值: 形参怎么变,实参也不会跟着形参变.
传引用: 实参会随着形参而改变,相当于用一个变量名.
传地址: 实参会随着形参而改变,由于他们用一个地址.
这些只是本人的理解.
|
|
|
|
 |
|
 |
 |
|
 |
 |
网友:
windlike | 时间:2007-06-05 20:06:26 IP地址:211.96.69.★ |
|
|
|
在我以往的开发经验中,还没用到过“传引用”。什么时候”传地址“,什么时候"传引用"呢?
|
|
|
|
 |
|
 |
 |
|
 |
 |
网友:
windlike | 时间:2007-06-06 10:52:14 IP地址:211.96.69.★ |
|
|
|
在PHP手册中,传值和传地址的解释:
位置: PHP 手册 -> 章7. 变量
PHP 3 中,变量总是传值赋值。那也就是说,当你将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。有关这种类型的赋值操作,请参阅表达式一章。
PHP 4 提供了另外一种方式给变量赋值:传地址赋值。这意味着新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。这同样意味着其中没有执行复制操作;因而,这种赋值操作更加快速。尽管如此,任何提速的操作只有在紧密循环或者大数组或者对象才可能被注意到。
使用传地址赋值,简单地追加一个(&)符号到将要赋值的变量前(源变量)。
需要注意的是只有命名变量才可以传地址赋值,这一点非常重要。
|
|
|
|
 |
|
 |
 |
|
 |
 |
网友:
raincatss
| 时间:2007-06-12 11:59:56 IP地址:221.232.169.★ |
|
|
|
|
|
|
 |
|
 |
 |
|
 |
 |
网友:
windlike | 时间:2007-06-22 17:12:28 IP地址:202.134.70.★ |
|
|
|
// 例子: 通过引用传递参数
function doubleValue(&$var){
$var = $var * 2;
}
$variable =5 ;
doubleValue($variable);
echo "\$variable is : $variable";
// 该例输出: $variable is : 10
// 例子: 通过引用赋值
$x = 10;
$y = &$x;
$y++;
echo $x;
echo $y;
// 该例输出: 11 11
// 因为$y是对$x的引用,因此对$y的任何改变都会影响$x。实际上,它们是同一个变量。因此,若将$y加1,也就将$x加1,因而两者都等于11。
|
|
|
|
 |
|
 |
 |
|
 |
 |
网友:
windlike | 时间:2007-06-22 17:18:58 IP地址:202.134.70.★ |
|
|
|
// 例子: 从函数返回的引用
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
echo $a;
// 此例输出: 6
|
|
|
|
 |
|
 |
 |
|
 |
 |
网友:
windlike | 时间:2007-06-22 17:23:39 IP地址:202.134.70.★ |
|
|
|
// 例子: 取消引用
// 当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:
$a = 1;
$b =& $a;
unset ($a);
// 不会 unset $b,只是 $a。反之 unset($b) 也实用
|
|
|
|
 |
|
 |
|  |
|
 |
|