3v4l.org

run code in 300+ PHP versions simultaneously
<?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);

preferences:
27.5 ms | 402 KiB | 5 Q