3v4l.org

run code in 300+ PHP versions simultaneously
<?php class DebugHelper { public function mapShallow($value, int $maxDepth, &$seenObjects = []) { if (is_object($value)) { $oid = spl_object_id($value); $className = get_class($value) . '#' . $oid; if ($seenObjects[$oid] ?? false) { return '**recursive class: ' . $className . '**'; } $seenObjects[$oid] = true; if ($maxDepth <= 0) { return '**class: ' . $className . '**'; } $value = array_merge(['**class**' => $className], (array) $value); } elseif (!is_array($value)) { return $value; } if ($maxDepth <= 0) { return '**array of size: ' . count($value) . '**'; } $res = []; $unseenObjects = []; foreach ($value as $k => $v) { if (is_object($v)) { $oid = spl_object_id($v); if (!($seenObjects[$oid] ?? false)) { $unseenObjects[$k] = true; } } $res[$k] = $this->mapShallow($v, -1, $seenObjects); } foreach ($value as $k => $v) { if (!is_object($v) && !is_array($v)) { continue; } $seenObjects2 = $seenObjects; if (is_object($v) && ($unseenObjects[$k] ?? false)) { unset($seenObjects2[spl_object_id($v)]); } $res[$k] = $this->mapShallow($v, $maxDepth - 1, $seenObjects2); } return $res; } } $dt = new \DateTime('2000-02-20 10:00'); $arr = [ 'foo', [1, 2, [3]], [$dt], $dt, ]; print_r((new DebugHelper())->mapShallow($arr, 2));
Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.28, 8.4.1 - 8.4.14, 8.5.0 - 8.5.1
Array ( [0] => foo [1] => Array ( [0] => 1 [1] => 2 [2] => **array of size: 1** ) [2] => Array ( [0] => **recursive class: DateTime#1** ) [3] => Array ( [**class**] => DateTime#1 [date] => 2000-02-20 10:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Amsterdam ) )
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.
Output for 7.0.0 - 7.0.33, 7.1.0 - 7.1.33
Fatal error: Uncaught Error: Call to undefined function spl_object_id() in /in/uJh5r:36 Stack trace: #0 /in/uJh5r(71): DebugHelper->mapShallow(Array, 2) #1 {main} thrown in /in/uJh5r on line 36
Process exited with code 255.
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40
Parse error: syntax error, unexpected '?' in /in/uJh5r on line 12
Process exited with code 255.
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29
Parse error: syntax error, unexpected '[' in /in/uJh5r on line 5
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected '[' in /in/uJh5r on line 5
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/uJh5r on line 5
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/uJh5r on line 5
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/uJh5r on line 5
Process exited with code 255.

preferences:
103.5 ms | 417 KiB | 5 Q