If you put a object into other variables, that will be pointer to original variable.
Look at this example:
$a = {'foo': 'bar'} # a dictionary
$b = $a
println($a['foo']) # `bar`
println($b['foo']) # `bar`
# we change `$b`:
$b['foo'] = 'new'
println($b['foo']) # `new`
println($a['foo']) # `new`!
In the above example, why after changing $b
, also $a
was changed? Because we put $a
into $b
. now, $b
points to real $a
.(means it is not a copy).
But how to clone objects? We should use clone
function:
$a = {'foo': 'bar'} # a dictionary
# using clone function
$b = clone($a)
println($a['foo']) # `bar`
println($b['foo']) # `bar`
# we change `$b`:
$b['foo'] = 'new'
println($b['foo']) # `new`
println($a['foo']) # `bar` (the old value)