मैंने सोचा कि PHP =
एक साधारण मूल्य असाइनमेंट था। उदाहरण के लिए:PHP असाइनमेंट इस तरह से क्यों व्यवहार करता है?
$x = 1;
$a = $x;
$b = $x;
$a++;
echo $a;
echo $b;
21
उत्पादन के रूप में उत्पादित करता है। हालांकि, नीचे दिया गया कोड अलग-अलग व्यवहार करता है जो मुझे अपेक्षित था। मैं मूल रूप से कई चर करने के लिए "एक ही" मान देना कोशिश कर रहा था:
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);
}
का उत्पादन:
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"
}
}
आप array A
अपेक्षा के अनुरूप बदल में object
संपत्ति देख सकते हैं, लेकिन यह भी array B
में बदल दिया है।
आप यहाँ कोड की जांच कर सकते हैं: http://sandbox.onlinephpfunctions.com/code/bff611fc9854b777114d38a3b4c60d524fdf2e19
मैं कैसे कई पीएचपी चर को समान मान प्रदान और उन्हें इस "क्वांटम उलझाव" राज्य में और नकल के बिना बिना उन्हें हेरफेर कर सकते हैं?
यह भी देखें: http://docs.php.net/manual/en/language.oop5.references.php – VolkerK