1. 程式人生 > >PHP之值傳遞與引用傳遞

PHP之值傳遞與引用傳遞

廢話不多說,直接上程式碼(值傳遞與引用傳遞的區別我在這就不介紹了,不懂得的小夥伴直接程式碼理解,還是不懂 -> 自行度娘):

普通變數: 值傳遞

<?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";
}
?>