3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(E_ALL|E_STRICT); class Obj { // Testing $this->a being a dynamic property. function __construct($a) { $this->a = $a; } public function __wakeup() { $this->a = 42; for ($i = 0; $i < 10000; $i++) { $this->{'b' . $i} = 42; } } } function main() { $obj = (object)["test" => 'foo']; // array (not a reference, but should be copied on write) $a = new Obj($obj); $b = new Obj($obj); $variable = [$a, $b]; $serialized = serialize($variable); printf("%s\n", $serialized); $unserialized = unserialize($serialized); echo "Called __unserialize\n"; for ($i = 0; $i < 10000; $i++) { if ($unserialized[0]->{'b' . $i} !== 42) { echo "Fail 0 b$i\n"; return; } if ($unserialized[1]->{'b' . $i} !== 42) { echo "Fail 1 b$i\n"; return; } unset($unserialized[0]->{'b' . $i}); unset($unserialized[1]->{'b' . $i}); } var_dump($unserialized); } main();

preferences:
28.08 ms | 402 KiB | 5 Q