JS:
var a = {"Client":"jQuery","Server":"PHP"};
var b = a;
a["New"] = "Element";
console.log(b);
// 输出 Object { Client="jQuery", Server="PHP", New="Element"}
PHP例程1:
$a = array('Client'=>'jQuery','Server'=>'PHP');
$b = $a;
$a['New'] = 'Element';
var_export($b);
//输出 array('Client'=>'jQuery','Server'=>'PHP')
PHP例程2:
$a = array('Client'=>'jQuery','Server'=>'PHP');
$b = &$a; //引用赋值
$a['New'] = 'Element';
var_export($b);
//输出 array('Client'=>'jQuery','Server'=>'PHP','New'=>'Element')
JavaScript中把一个关联数组a赋值给b,然后改变a的内容,为什么b也跟着发生变化?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
对于数组这种非普通类型(字符串,整型,布尔),你的赋值相当于地址拷贝,就是a、b占用了同一段地址。所以改了b,a也会变,本质上a、b就是一个东西。
因为a跟b指向的都是同一个数组呀。
要想做到不改变,就先把对象转化成字符串,再转化回来对象,就是两个不同的对象了。直接用的话,其实就是一个。楼上已经给出正解。
这个是php和js的一个不同点,js对数组传递是引用的,但是php的是值传递
js对数组传递是引用的