数组值传递
实例代码:
<?php function
main() { $cc
= array( 'a' , 'b' ); change($cc); var_dump($cc); die; } function
change($cc){ $cc
= array( 'dd' ); } main(); ?> output: array(2)
{ [0]=> string (1)
"a" [1]=> string (1)
"b" } |
数组引用传递
<?php function
main() { $cc
= array( 'a' , 'b' ); change($cc); var_dump($cc); die; } function
change(&$cc){ $cc
= array( 'dd' ); } main(); ?> outpout: array(1)
{ [0]=> string (2)
"dd" } |
类对象值传递
<?php class pp{ public $ss
= 0; } function
main() { $p
= new pp(); change($p); var_dump($p); die; } function
change($p){ $p->ss
= 10; } main(); ?> output: object (pp)#1
(1) { [ "ss" ]=> int (10) } |
类对象引用传递
<?php class pp{ public $ss
= 0; } function
main() { $p
= new pp(); change($p); var_dump($p); die; } function
change(&$p){ $p->ss
= 10; } main(); ?> object (pp)#1
(1) { [ "ss" ]=> int (10) } |
总结:php中,数组是当一个普通变量,值传递是要一个实参的一个拷贝副本,跟实参无关,引用传递后可以改变实参的值
而类的对象是无论值传递和引用传递都是引用传递,是对对象的引用,都会改变实参的值