3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php $rb = new RBTree; $inputs = array(); for ($i = 0; $i <= 100; ++$i) { $key = mt_rand(); $value = mt_rand(); $rb->put($key, $value); $inputs[] = $key; } for ($i = 0; $i <= 100; ++$i) { $key = mt_rand(0, 100); var_dump($key, $rb->get($key)); echo "\n"; } var_dump(101, $rb->get(101)); class Node { public $color; public $key; public $value; public $left; public $right; public function __construct($key, $value, $color) { $this->key = $key; $this->value = $value; $this->color = $color; } public function compare($key) { if ($this->key < $key) return -1; elseif ($this->key > $key) return 1; else return 0; } } class RBTree { const RED = true; const BLACK = false; private $root; public function isEmpty() { return $this->root == null; } public function put($key, $value) { $this->root = $this->insert($this->root, (int)$key, $value); $this->root->color = self::BLACK; } public function get($key) { $x = $this->search($this->root, (int)$key); return $x ? $x->value : null; } private function isRed($h) { return $h ? $h->color : false; } private function insert($x, $key, $value) { if (!$x) return new Node($key, $value, self::RED); $cmp = $x->compare($key); if ($cmp > 0) $x->right = insert($x->right, $key, $value); elseif ($cmp < 0) $x->left = insert($x->left, $key, $value); else $x->value = $value; if ($this->isRed($x->right) && !$this->isRed($x->left)) $x = $this->rotateLeft($x); if ($this->isRed($x->left) && $this->isRed($x->left->left)) $x = $this->rotateRight($x); if ($this->isRed($x->left) && $this->isRed($x->right)) $this->flipColors($x); return $x; } private function search($x, $key) { while ($x) { $cmp = $x->compare($key); if ($cmp > 0) $x = $x->right; elseif ($cmp < 0) $x = $x->left; else return $x; } return null; } private function flipColors($h) { $h->color = !$h.color; $h->left->color = !$h->left->color; $h->right->color = $h->right->color; } private function rotateLeft($h) { $x = $h->right; $h->right = $x->left; $x->left = $h; $x->color = $x->left->color; $x->left->color = self::RED; return $x; } private function rotateRight($h) { $x = $h->left; $h->left = $x->right; $x->right = $h; $x->color = $x->right->color; $x->right->color = self::RED; return $x; } }
Output for 7.1.0
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:77 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 1076598998, 602686847) #1 /in/7TjAY(8): RBTree->put(1076598998, 602686847) #2 {main} thrown in /in/7TjAY on line 77
Process exited with code 255.
Output for 7.0.14
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:76 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 1014382935, 1304484516) #1 /in/7TjAY(8): RBTree->put(1014382935, 1304484516) #2 {main} thrown in /in/7TjAY on line 76
Process exited with code 255.
Output for 7.0.7
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:76 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 1338550210, 1934306652) #1 /in/7TjAY(8): RBTree->put(1338550210, 1934306652) #2 {main} thrown in /in/7TjAY on line 76
Process exited with code 255.
Output for 7.0.6
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:77 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 1363423865, 454292361) #1 /in/7TjAY(8): RBTree->put(1363423865, 454292361) #2 {main} thrown in /in/7TjAY on line 77
Process exited with code 255.
Output for 7.0.5
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:77 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 2130405410, 1128433350) #1 /in/7TjAY(8): RBTree->put(2130405410, 1128433350) #2 {main} thrown in /in/7TjAY on line 77
Process exited with code 255.
Output for 7.0.4
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:76 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 1020760388, 1173705259) #1 /in/7TjAY(8): RBTree->put(1020760388, 1173705259) #2 {main} thrown in /in/7TjAY on line 76
Process exited with code 255.
Output for 7.0.3
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:77 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 892948853, 1204622701) #1 /in/7TjAY(8): RBTree->put(892948853, 1204622701) #2 {main} thrown in /in/7TjAY on line 77
Process exited with code 255.
Output for 7.0.2
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:77 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 1914578725, 348817839) #1 /in/7TjAY(8): RBTree->put(1914578725, 348817839) #2 {main} thrown in /in/7TjAY on line 77
Process exited with code 255.
Output for 7.0.1
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:77 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 415734301, 90460615) #1 /in/7TjAY(8): RBTree->put(415734301, 90460615) #2 {main} thrown in /in/7TjAY on line 77
Process exited with code 255.
Output for 7.0.0
Fatal error: Uncaught Error: Call to undefined function insert() in /in/7TjAY:76 Stack trace: #0 /in/7TjAY(56): RBTree->insert(Object(Node), 585287008, 476824597) #1 /in/7TjAY(8): RBTree->put(585287008, 476824597) #2 {main} thrown in /in/7TjAY on line 76
Process exited with code 255.
Output for 5.0.0 - 5.0.1, 5.0.3 - 5.1.0, 5.1.2 - 5.1.4, 5.2.0 - 5.2.2, 5.2.4, 5.2.6, 5.2.8, 5.2.10, 5.2.12, 5.2.15, 5.2.17 - 5.3.0, 5.3.4 - 5.3.7, 5.3.9 - 5.3.10, 5.3.16 - 5.3.18, 5.3.20 - 5.3.21, 5.3.25 - 5.3.26, 5.3.29 - 5.4.1, 5.4.4 - 5.4.6, 5.4.8 - 5.4.9, 5.4.14, 5.4.16, 5.4.19, 5.4.21 - 5.4.24, 5.4.26 - 5.4.27, 5.4.29, 5.4.32 - 5.4.34, 5.4.36 - 5.4.37, 5.4.40, 5.4.43, 5.4.45, 5.5.2 - 5.5.3, 5.5.5 - 5.5.6, 5.5.10, 5.5.12, 5.5.14, 5.5.18 - 5.5.21, 5.5.24 - 5.5.25, 5.5.28, 5.5.30, 5.5.35 - 5.5.36, 5.6.1, 5.6.6, 5.6.9 - 5.6.12, 5.6.17, 5.6.19 - 5.6.20, 5.6.28, hhvm-3.10.0 - 3.12.0
Fatal error: Call to undefined function insert() in /in/7TjAY on line 77
Process exited with code 255.
Output for 5.0.2, 5.1.1, 5.1.5 - 5.1.6, 5.2.3, 5.2.5, 5.2.7, 5.2.9, 5.2.11, 5.2.13 - 5.2.14, 5.2.16, 5.3.1 - 5.3.3, 5.3.8, 5.3.11 - 5.3.15, 5.3.19, 5.3.22 - 5.3.24, 5.3.27 - 5.3.28, 5.4.2 - 5.4.3, 5.4.7, 5.4.10 - 5.4.13, 5.4.15, 5.4.17 - 5.4.18, 5.4.20, 5.4.25, 5.4.28, 5.4.30 - 5.4.31, 5.4.35, 5.4.38 - 5.4.39, 5.4.41 - 5.4.42, 5.4.44, 5.5.0 - 5.5.1, 5.5.4, 5.5.7 - 5.5.9, 5.5.11, 5.5.13, 5.5.15 - 5.5.16, 5.5.22 - 5.5.23, 5.5.26 - 5.5.27, 5.5.29, 5.5.31 - 5.5.34, 5.6.0, 5.6.2 - 5.6.5, 5.6.7 - 5.6.8, 5.6.13 - 5.6.16, 5.6.18, 5.6.21 - 5.6.22
Fatal error: Call to undefined function insert() in /in/7TjAY on line 76
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/7TjAY on line 21
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/7TjAY on line 21
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/7TjAY on line 21
Process exited with code 255.