#50255 [Ver->Csd]: isset() and empty() silently casts array to object
| From: | felipe@php.net | Date: | Tue, 24 Nov 2009 21:54:11 +0000 |
| Subject: | #50255 [Ver->Csd]: isset() and empty() silently casts array to object | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-145046@lists.php.net to get a copy of this message | ||
ID: 50255
Updated by: felipe@php.net
-Summary: isset() and empty() silently casts array to object?
Reported By: tyra3l at gmail dot com
-Status: Verified
+Status: Closed
Bug Type: Scripting Engine problem
Operating System: *
PHP Version: 5.*, 6
-Assigned To:
+Assigned To: felipe
New Comment:
This bug has been fixed in SVN.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2009-11-23 14:07:01] tyra3l at gmail dot com
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
------------------------------------------------------------------------
[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