3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php function setSessionTestingData() { $agent = 5; $ticket = 6; $_SESSION = array( 'agent_id' => '2', 'ticket_id' => '3', 'agent' => $agent, 'ticket' => $ticket, 'sub_array' => array( 'sub' => 4, 'agent' => $agent, 'ticket' => $ticket, ), ); return $_SESSION; } function getKey($session_key, $is_object_of_type = null) { $current_key = ''; $counter = 0; try { $session_keys_array = explode(':', $session_key); //checking if keys and value exist foreach ($session_keys_array as $key) { $counter++; $current_key .= '[\'' . $key . '\']'; if (!$_SESSION) { throw new Exception("\$_SESSION does not Exist"); } $prev_step = $_SESSION; if (array_key_exists($key, $prev_step) && count($session_keys_array) > $counter) { eval('$prevStep = $_SESSION' . $current_key . ';'); if (!is_array($prev_step) && count($session_keys_array) > $counter) { throw new Exception ("\$_SESSION$current_key is not an array"); } } else if ( is_array($prev_step) && eval('array_key_exists(\'' . $current_key . '\', $_SESSION);') && count($session_keys_array) == $counter ) { eval('$result = $_SESSION' . $current_key . ';'); } else { throw new Exception("\$_SESSION$current_key does not Exist"); } } //checking if value is of right type if (!empty($is_object_of_type) && !$result instanceof $is_object_of_type) { throw new Exception("\$_SESSION$current_key is not instance of $is_object_of_type"); } //if we are here that means we have all safe data } catch(Exception $e) { //TODO:change Exception to SessionException and log this $result = null; } return $result; } $_SESSION = setSessionTestingData(); echo getKey('agent_id'); echo getKey('ticket_id'); echo getKey('sub_array:sub');
based on aY1pS
Output for 7.0.0 - 7.2.0
Parse error: syntax error, unexpected 'agent_id' (T_STRING), expecting ',' or ')' in /in/Y52pg(47) : eval()'d code on line 1
Process exited with code 255.
Output for 5.4.11 - 5.6.28
Parse error: syntax error, unexpected 'agent_id' (T_STRING) in /in/Y52pg(47) : eval()'d code on line 1 Parse error: syntax error, unexpected 'ticket_id' (T_STRING) in /in/Y52pg(47) : eval()'d code on line 1 Parse error: syntax error, unexpected 'sub_array' (T_STRING) in /in/Y52pg(47) : eval()'d code on line 1
Output for 5.3.21 - 5.3.29
Parse error: syntax error, unexpected T_STRING in /in/Y52pg(47) : eval()'d code on line 1 Parse error: syntax error, unexpected T_STRING in /in/Y52pg(47) : eval()'d code on line 1 Parse error: syntax error, unexpected T_STRING in /in/Y52pg(47) : eval()'d code on line 1
Process exited with code 255.