Changed CRM_Utils_Array::value to use isset() and only array_key_exists() when it returns false (eg. the value is null). isset() also casts the  variable properly where as array_key_exists() throws a warning if it is not a string or integer.