ID: 44863 Updated by: [EMAIL PROTECTED] Reported By: igordonin at gmail dot com Status: Bogus Bug Type: Scripting Engine problem Operating System: Windows XP SP2 PHP Version: 5.2.5 New Comment:
for the last time, you've $Query['Try_Login'] = "conn_err"; and you're doing an isset($Query['Try_Login']['Error']); So, $Query['Try_Login'] is a string. This is equivalent to $mystring = "conn_err"; and isset($mystring['Error']) which is equivalent to isset($mystring[0]); You're wrongly using isset() here, You probably want to check whether 'Error' is a defined index of $Query, so do isset($Query['Error']).. instead of isset($Query['Try_Login']['Error']). But really bugs.php.net is not a place for that kind of support, you should check out php.net/support and find a medium that suits you better. Regards. Previous Comments: ------------------------------------------------------------------------ [2008-04-29 19:13:18] igordonin at gmail dot com Hey, I don't mean to be annoying, hope didn't get there yet, but check this out: Query_Repository returns string "conn_err", so it's the same as: $Query["Try_Login"] = "conn_err"; var_dump( $Query ) results in: array(1) { ["Try_Login"]=> string(8) "conn_err" } There's no suck key as ["Error"] at all ... So what you mean is that isset will recognize $Query["Try_Login"]["Error"] as $Query["Try_Login"][0] because of the string offset and then return true? You may be right, that may be in fact the current behavior, but I don't see how that can be the best behavior at all! I'm no expert though. So thank you very much for taking the time to reply. I do appreciate it. ------------------------------------------------------------------------ [2008-04-29 19:03:11] [EMAIL PROTECTED] Yes this is expected: non-numeric indexes are interpreted as 0 for string offsets. so isset($string["foo"]) is equivalent to isset($string[0]) which checks whether the string offset 0 exists, and it does, your string is not empty. ------------------------------------------------------------------------ [2008-04-29 18:56:29] igordonin at gmail dot com You're right! But is this expected to return true? if (isset($Query["Try_Login"]["Error")) { unset($Query["Try_Login"]["Error"]); } 'Cause that's when I'm trying to unset $Query["Try_Login"]["Error"] ... ------------------------------------------------------------------------ [2008-04-29 18:51:57] [EMAIL PROTECTED] Look: $Query is an array that contains a string at the index "Try_Login". So $Query["Try_Login"] is a string. You're unsetting $Query["Try_Login"]["Error"] so yes, you're trying to unset an offset of a string. ------------------------------------------------------------------------ [2008-04-29 18:43:26] igordonin at gmail dot com You're wrong, var_dump says: array(1) { ["Try_Login"]=> string(8) "conn_err" } It's so an array! ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/44863 -- Edit this bug report at http://bugs.php.net/?id=44863&edit=1