3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Odometer { public function __construct(array $values, $max_places = 0){ $this->values = array_values($values); $this->max_places = $max_places; reset($values); $this->register[0] = key($values); end($values); $this->limit = key($values); } public function iterate($force = false){ $rollback = $this->register; $this->register[0]++; for($i = 0; $i < count($this->register); $i++){ if($this->register[$i] > $this->limit){ $this->register[$i] = 0; if(isset($this->register[$i+1])){ $this->register[$i+1]++; } else { if($this->max_places && count($this->register)+1 > $this->max_places && !$force){ $this->register = $rollback; return; } $this->register[$i+1] = 0; } } } } public function setMeter(){ for($i = 0; $i < count($this->register); $i++){ $this->meter[$i] = $this->values[$this->register[$i]]; } } public function readMeter(){ $this->setMeter(); return '[' . implode('][', array_reverse($this->meter)) . ']' . "\n"; } } $o = new Odometer(range('a','c'), 2); echo $o->readMeter(); for($i = 0; $i < 20; $i++){ $o->iterate(false); echo $o->readMeter(); }
Output for 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
Deprecated: Creation of dynamic property Odometer::$values is deprecated in /in/gT7Nq on line 5 Deprecated: Creation of dynamic property Odometer::$max_places is deprecated in /in/gT7Nq on line 6 Deprecated: Creation of dynamic property Odometer::$register is deprecated in /in/gT7Nq on line 9 Deprecated: Creation of dynamic property Odometer::$limit is deprecated in /in/gT7Nq on line 12 Deprecated: Creation of dynamic property Odometer::$meter is deprecated in /in/gT7Nq on line 36 [a] [b] [c] [a][a] [a][b] [a][c] [b][a] [b][b] [b][c] [c][a] [c][b] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c]
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 Deprecated: Creation of dynamic property Odometer::$values is deprecated in /in/gT7Nq on line 5 Deprecated: Creation of dynamic property Odometer::$max_places is deprecated in /in/gT7Nq on line 6 Deprecated: Creation of dynamic property Odometer::$register is deprecated in /in/gT7Nq on line 9 Deprecated: Creation of dynamic property Odometer::$limit is deprecated in /in/gT7Nq on line 12 Deprecated: Creation of dynamic property Odometer::$meter is deprecated in /in/gT7Nq on line 36 [a] [b] [c] [a][a] [a][b] [a][c] [b][a] [b][b] [b][c] [c][a] [c][b] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c]
Output for 5.6.0 - 5.6.27, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 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
[a] [b] [c] [a][a] [a][b] [a][c] [b][a] [b][b] [b][c] [c][a] [c][b] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c] [c][c]

preferences:
177.95 ms | 403 KiB | 234 Q