Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:10087 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 85144 invoked by uid 1010); 25 May 2004 13:09:08 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 85119 invoked by uid 1007); 25 May 2004 13:09:08 -0000 Message-ID: <20040525130908.85118.qmail@pb1.pair.com> To: internals@lists.php.net References: <20040522064028.3397.qmail@pb1.pair.com> Date: Tue, 25 May 2004 23:03:15 +1000 Lines: 46 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1409 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409 X-Posted-By: 144.132.76.67 Subject: Re: Internal casting of objects as array keys From: aidan@php.net ("Aidan Lister") I'm going to go ahead and post this as a bug, unless there is a reason noone replied... "Aidan Lister" wrote in message news:20040522064028.3397.qmail@pb1.pair.com... > Hello devs, > > I'd like to discuss the use of objects as array keys. > > class idobject { > private $_id; > function __construct ($id) { $this->_id = $id; } > function __tostring () { return (int)$this->_id; } > } > > $blah1 = new idobject(1); > $blah2 = new idobject(2); > $blah3 = new idobject(3); > $blah4 = new idobject(4); > > $array = array ( > $blah1 => 'blah1', > $blah2 => 'blah2', > $blah3 => 'blah3', > $blah4 => 'blah4', > ); > > echo "
";
> var_dump($array);
> echo "
"; > ?> > > In PHP4 this results in an error, > In PHP5 there is no error, the array is simply empty. > > An array key can only be a string/int, thus, when someone attempts to use an > array as a key would it not make sense to cast the object? > > This behaviour would then be consistant with resources. > > Regards, > Aidan