Req #54082 [Com]: Cast array key objects to string

[email protected] ("reallfqq-php at yahoo dot fr")
Newsgroups php.bugs
Message-ID <[email protected]>
Edit report at https://bugs.php.net/bug.php?id=54082&edit=1

 ID:                 54082
 Comment by:         reallfqq-php at yahoo dot fr
 Reported by:        slusarz at curecanti dot org
 Summary:            Cast array key objects to string
 Status:             Open
 Type:               Feature/Change Request
 Package:            Arrays related
 Operating System:   Irrelevant
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

Still true in PHP 7.0.0...
Will you fix it?


Previous Comments:
------------------------------------------------------------------------
[2014-05-25 01:44:16] [email protected]

This is an absolute pain when dealing with strings that might be returned from autoescaped Twig as Twig_Markup objects. I'd warmly appreciate a bugfix even in 5.4...

------------------------------------------------------------------------
[2011-10-14 22:02:07] maschingan at gmail dot com

The same issue.

------------------------------------------------------------------------
[2011-02-23 19:47:46] slusarz at curecanti dot org

Description:
------------
Per http://www.php.net/manual/en/language.types.array.php, array keys can be integers or strings.

If an object can be converted to a string representation (i.e. it has a __toString() method defined), it should be automatically cast to a string.  Currently, an error is thrown instead.

Current workaround is to manually cast to string when setting a key.

Test script:
---------------
class Foo {
    public function __toString() {
        return 'A';
    }
}

$a = new Foo();
$b = array($a => 1);

print_r($b);

Expected result:
----------------
Array
(
    'A' => 1
)

Actual result:
--------------
PHP Warning:  Illegal offset type [...]
Array
(
)


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



--
Edit this bug report at https://bugs.php.net/bug.php?id=54082&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.