- var_dump: documentation ( source)
<?php
class Foo
{
public $bar = "";
}
$foos = ['a' => new Foo()];
$foos['b'] = &$foos['a'];
function modifyFoos(array $foos)
{
$foos['a']->bar = "bar";
}
modifyFoos($foos);
var_dump($foos);
function modifyFoosHandlingReferencesIncorrectly(array $foos)
{
foreach ($foos as $key => $val) {
$foos[$key] = clone $val;
}
$foos['a']->bar = "baz";
var_dump($foos);
}
modifyFoosHandlingReferencesIncorrectly($foos);
var_dump($foos);
function modifyFoosHandlingReferences(array $foos)
{
$oldFoos = $foos;
$foos = [];
foreach ($oldFoos as $key => $val) {
$foos[$key] = clone $val;
}
$foos['a']->bar = "barbaz";
}
modifyFoosHandlingReferences($foos);
var_dump($foos);