From: Dmitry Stogov Date: Wed, 17 Dec 2003 15:06:40 +0000 (+0000) Subject: accessing singular subnode as array X-Git-Tag: php-5.0.0b3RC1~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4fd476ee43feec3cfd30faf40e8200dd40fd7e99;p=php accessing singular subnode as array --- diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 29b5d2dbe6..e2a127a35b 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -243,6 +243,9 @@ static zval * sxe_property_read(zval *object, zval *member, zend_bool silent TSR */ static zval * sxe_dimension_read(zval *object, zval *offset TSRMLS_DC) { + if (Z_TYPE_P(offset) == IS_LONG && Z_LVAL_P(offset) == 0) { + return object; + } return sxe_prop_dim_read(object, offset, 0, 1, 0 TSRMLS_CC); } /* }}} */ diff --git a/ext/simplexml/tests/015.phpt b/ext/simplexml/tests/015.phpt index ecf172a4ab..240c8f5b6b 100644 --- a/ext/simplexml/tests/015.phpt +++ b/ext/simplexml/tests/015.phpt @@ -10,31 +10,35 @@ $xml =<< EOF; +$xml2 =<< + + + +EOF; + $people = simplexml_load_string($xml); var_dump($people->person['name']); var_dump($people->person[0]['name']); -$people->person['name'] = "XXX"; -var_dump($people->person['name']); +//$people->person['name'] = "XXX"; +//var_dump($people->person['name']); +//var_dump($people->person[0]['name']); +//$people->person[0]['name'] = "YYY"; +//var_dump($people->person['name']); +//var_dump($people->person[0]['name']); +//unset($people->person[0]['name']); +//var_dump($people->person['name']); +//var_dump($people->person[0]['name']); +//var_dump(isset($people->person['name'])); +//var_dump(isset($people->person[0]['name'])); +$people = simplexml_load_string($xml2); var_dump($people->person[0]['name']); -$people->person[0]['name'] = "YYY"; -var_dump($people->person['name']); -var_dump($people->person[0]['name']); -unset($people->person[0]['name']); -var_dump($people->person['name']); -var_dump($people->person[0]['name']); -var_dump(isset($people->person['name'])); -var_dump(isset($people->person[0]['name'])); +var_dump($people->person[1]['name']); echo "---Done---\n"; ?> --EXPECT-- string(3) "Joe" string(3) "Joe" -string(3) "XXX" -string(3) "XXX" -string(3) "YYY" -string(3) "YYY" -NULL -NULL -bool(false) -bool(false) +string(3) "Joe" +string(3) "Boe" ---Done---