废话不多说,直接上代码(值传递与引用传递的区别我在这就不介绍了,不懂得的小伙伴直接代码理解,还是不懂 -> 自行度娘):
普通变量: 值传递
<?php
$a = 6;
echo $a; // 6
set_value_common($a); // 10
echo $a; // 6
set_value_reference($a); // 10
echo $a; // 10
// 值传递
function set_value_common($var) {
$var = 10;
echo $var;
}
// 引用传递
function set_value_reference(&$var) {
$var = 10;
echo $var;
}
?>
数组:
之前误以为PHP跟C一样数组是引用传递,结果做项目时输出结果不一致,才知道 PHP 的数组跟普通变量一样是值传递
<?php
$arr = [1, 2, 3, 4, 5];
var_dump($arr); // array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) }
echo "<br>";
set_arr_common($arr);
var_dump($arr); //array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) }
echo "<br>";
set_arr_reference($arr);
var_dump($arr); // array(3) { [0]=> int(3) [1]=> int(3) [2]=> int(3) }
echo "<br>";
// 值传递
function set_arr_common($arr) {
$arr = array(3, 3, 3);
}
// 引用传递
function set_arr_reference(&$arr) {
$arr = array(3, 3, 3);
}
?>
对象: 引用传递
<?php
class car {
public $name = "BMW";
}
$obj = new car();
var_dump($obj); //object(car)#1 (1) { ["name"]=> string(3) "BMW" }
echo "<br>";
set_arr_common($obj);
var_dump($obj); //object(car)#1 (1) { ["name"]=> string(4) "BenZ" }
echo "<br>";
function set_arr_common($obj) {
$obj -> name = "BenZ";
}
?>