Tôi nghĩ PHP =
là một nhiệm vụ giá trị đơn giản. Ví dụ:Tại sao phân bổ PHP hoạt động theo cách này?
$x = 1;
$a = $x;
$b = $x;
$a++;
echo $a;
echo $b;
Sản xuất 21
như mong đợi. Tuy nhiên, các mã dưới đây hoạt động khác nhau sau đó những gì tôi mong đợi. Tôi đã cơ bản cố định giá trị "cùng một" giá trị cho nhiều biến:
class X {
public $val = 0;
public function doSomething() {
$this->val = "hi";
}
}
function someFunction() {
$template = array('non_object' => 0, 'object' => new X());
$a = $template;
$b = $template;
//Do something
$a['object']->doSomething();
var_dump($a);
var_dump($b);
}
Tạo:
array(2) {
["non_object"]=>
int(0)
["object"]=>
object(X)#1 (1) {
["val"]=>
string(2) "hi"
}
}
array(2) {
["non_object"]=>
int(0)
["object"]=>
object(X)#1 (1) {
["val"]=>
string(2) "hi"
}
}
Như bạn có thể thấy object
tài sản trong array A
thay đổi như mong đợi, mà còn thay đổi trong array B
.
Bạn có thể kiểm tra mã ở đây: http://sandbox.onlinephpfunctions.com/code/bff611fc9854b777114d38a3b4c60d524fdf2e19
Làm thế nào tôi có thể gán giá trị như nhau đối với nhiều biến PHP và vận dụng chúng mà không cần phải cho họ trong "lượng tử rối" trạng thái này và không sao chép?
xem thêm: http://docs.php.net/manual/en/language.oop5.references.php – VolkerK