Bug #71208 [Asn]: Array/Object cast loses numeric property/element accessibility

[email protected]
Newsgroups php.bugs
Message-ID <[email protected]>
Edit report at https://bugs.php.net/bug.php?id=71208&edit=1

 ID:                 71208
 Updated by:         [email protected]
 Reported by:        [email protected]
 Summary:            Array/Object cast loses numeric property/element
                     accessibility
 Status:             Assigned
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   OS X 10.11 El Capitan
 PHP Version:        7.0.1
 Assigned To:        ajf
 Block user comment: N
 Private report:     N

 New Comment:

Er, the test script has an off-by-one error. It should be:

<?php

$arr = [1, 2, 4];
$obj = (object)$arr;

var_dump($obj);
var_dump($obj->{0}, $obj->{1}, $obj->{2});
var_dump($obj->{'0'}, $obj->{'1'}, $obj->{'2'});

?>


Previous Comments:
------------------------------------------------------------------------
[2015-12-23 23:52:02] [email protected]

This has been broken since at least PHP 5.4.

------------------------------------------------------------------------
[2015-12-23 23:50:41] [email protected]

Description:
------------
If an array is casted to an object, its integer keys become inaccessible integer(!) key properties. They should be normal string key properties instead.

Test script:
---------------
<?php

$arr = [1, 2, 4];
$obj = (object)$arr;

var_dump($obj);
var_dump($obj->{1}, $obj->{2}, $obj->{3});
var_dump($obj->{'1'}, $obj->{'2'}, $obj->{'3'});

?>

Expected result:
----------------
object(stdClass)#1 (3) {
  ["0"]=>
  int(1)
  ["1"]=>
  int(2)
  ["2"]=>
  int(4)
}
int(1)
int(2)
int(4)
int(1)
int(2)
int(4)

Actual result:
--------------
object(stdClass)#1 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(4)
}

Notice: Undefined property: stdClass::$1 in - on line 7

Notice: Undefined property: stdClass::$2 in - on line 7

Notice: Undefined property: stdClass::$3 in - on line 7

NULL
NULL
NULL

Notice: Undefined property: stdClass::$1 in - on line 8

Notice: Undefined property: stdClass::$2 in - on line 8

Notice: Undefined property: stdClass::$3 in - on line 8

NULL
NULL
NULL


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



--
Edit this bug report at https://bugs.php.net/bug.php?id=71208&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.