ID:               44863
 User updated by:  igordonin at gmail dot com
 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:

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.


Previous Comments:
------------------------------------------------------------------------

[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!

------------------------------------------------------------------------

[2008-04-29 18:39:38] [EMAIL PROTECTED]

Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.

$variable is a string and not an array. 

Your error : "Fatal error: Cannot unset string offsets" is pretty
explicit about it. 

------------------------------------------------------------------------

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

Reply via email to