#50255 [Ver]: isset() and empty() silently casts array to object?
| From: | tyra3l at gmail dot com | Date: | Mon, 23 Nov 2009 14:07:01 +0000 |
| Subject: | #50255 [Ver]: isset() and empty() silently casts array to object? | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-144963@lists.php.net to get a copy of this message | ||
ID: 50255
User updated by: tyra3l at gmail dot com
Reported By: tyra3l at gmail dot com
Status: Verified
Bug Type: Scripting Engine problem
Operating System: *
PHP Version: 5.*, 6
New Comment:
Thank you for verifying this.
It was noticed on our development machines, and I tested it on
different
php installations, so I can confirm this is also present on
5.2.5,5.2.8,5.2.11 also.
Tyrael
Previous Comments:
------------------------------------------------------------------------
[2009-11-23 13:28:40] jani@php.net
I'm sorry, I read this a bit hastily. This indeed is a bug.
------------------------------------------------------------------------
[2009-11-21 21:13:49] tyra3l at gmail dot com
could you show me which ticket duplicates this, and where this behavior
is documented in the manual?
because I tried to check this in the documentation, but I haven't found
it at the isset/empty manual page.
Tyrael
------------------------------------------------------------------------
[2009-11-21 10:08:26] tyra3l at gmail dot com
Description:
------------
If you try to check the existence of a property on an array,
suprisingly you wont get any error or notice, but you will get the
results as you were checking with the correct type.
Reproduce code:
---------------
<?php
$a = array('foo' => 'bar');
echo "<pre>";var_dump(isset($a->foo));echo "</pre>";
echo "<pre>";var_dump(isset($a->asd));echo "</pre>";
echo "<pre>";var_dump(empty($a->foo));echo "</pre>";
echo "<pre>";var_dump(empty($a->asd));echo "</pre>";
echo "<pre>";var_dump(@$a->foo);echo "</pre>";
Expected result:
----------------
Fatal error: Cannot use array as object in ...
OR
bool(false)
bool(false)
bool(true)
bool(true)
NULL
Actual result:
--------------
bool(true)
bool(false)
bool(false)
bool(true)
NULL
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=50255&edit=1