PHP之值傳遞與引用傳遞
阿新 • • 發佈:2019-02-06
廢話不多說,直接上程式碼(值傳遞與引用傳遞的區別我在這就不介紹了,不懂得的小夥伴直接程式碼理解,還是不懂 -> 自行度娘):
普通變數: 值傳遞
<?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";
}
?>