$c1 = $v1 = array();
$v1['key'] = 'value';
echo '$c1 === $v1: ' . (($c1 === $v1) ? 'true' : 'false'); // prints false
$c1 === $v1
是假的。但为什么?似乎$v1
自动设置为不同的数组,然后自动设置为原始数组。为什么会这样?
最初$c
和$v1
设置为相同的数组实例。因此,如果我变异$ v1,$c
不会反映更改,因为它们被设置为相同的数组实例。
答案 0 :(得分:4)
这些将不相同,因为您明确将它们设置为包含不同的值。第一个是空的,而第二个是值。
虽然它们没有设置为相同的引用,所以它们是两个不同的变量 - 当你这样做时
$c1 = $v1 = array();
您可以创建两个不同的数组。如果您希望更改一个数据以反映在两个数组中,则需要通过在变量标识符前使用&
运算符使其成为引用,如此。
$v1 = array();
$c1 = &$v1; // $c1 is now a reference to $v1
$v1['key'] = 'value';
echo '$c1 === $v1: ' . (($c1 === $v1) ? 'true' : 'false'); // true!
请注意,您需要在之后引用它您想要引用的变量。
使用这样的引用时,它会双向进行 - 对$v1
的任何更改都将应用于$c1
,反之亦然。所以它们是不同的变量,但总是保持相同的值。
上例中的比较是正确的,因为数组完全相同 - 不仅仅是通过引用,而是因为它们具有相同的值和键。如果比较两个未引用的数组与完全相同的值和完全相同的匹配键,那么你也会获得真正的相等。
var_dump(array('foo') === array('bar')); // false; same keys, different values
var_dump(array('bar') === array('bar')); // true; same keys, same values
var_dump(array('bar') === array('baz' => 'bar')); // false; different keys, same value
答案 1 :(得分:0)
因为它们是两个不同的对象,有两个不同的引用,发生一个不会影响另一个。就这么简单。
答案 2 :(得分:0)
这些数组不会相同,因为第二个数组有一个值。请运行以下代码:
<ion-app [ngClass]="'blur-background'"></ion-app>