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);
Output for git.master, git.master_jit, rfc.property-hooks
array(2) { ["a"]=> &object(Foo)#1 (1) { ["bar"]=> string(3) "bar" } ["b"]=> &object(Foo)#1 (1) { ["bar"]=> string(3) "bar" } } array(2) { ["a"]=> &object(Foo)#1 (1) { ["bar"]=> string(3) "baz" } ["b"]=> &object(Foo)#1 (1) { ["bar"]=> string(3) "baz" } } array(2) { ["a"]=> &object(Foo)#1 (1) { ["bar"]=> string(3) "baz" } ["b"]=> &object(Foo)#1 (1) { ["bar"]=> string(3) "baz" } } array(2) { ["a"]=> &object(Foo)#1 (1) { ["bar"]=> string(3) "baz" } ["b"]=> &object(Foo)#1 (1) { ["bar"]=> string(3) "baz" } }

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
60.49 ms | 402 KiB | 8 Q