3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Test { public $testdata = []; public function __construct(&$inputdata) { $this->testdata =& $inputdata; } public function &getIterator() { foreach ($this->testdata as $ikey => &$ivalue) { yield $ikey => $ivalue; } } } $data = array("one" => "Curly", "two" => "Larry", "three" => "Moe"); $t = new Test($data); foreach ($t->getIterator() as $tkey => &$tvalue) { // $tvalue -> $ivalue -> $t->testdata -> $inputdata -> $data // break any reference in that chain and the line below will not work $tvalue = strtoupper($tvalue); } foreach ($data as $dkey => $dvalue) { printf("%s: %s\n", $dkey, $dvalue); }
Output for 5.6.38, 7.0.0 - 7.0.33, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
one: CURLY two: LARRY three: MOE
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 one: CURLY two: LARRY three: MOE

preferences:
192.07 ms | 402 KiB | 216 Q