From 4fd476ee43feec3cfd30faf40e8200dd40fd7e99 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 17 Dec 2003 15:06:40 +0000 Subject: [PATCH] accessing singular subnode as array --- ext/simplexml/simplexml.c | 3 +++ ext/simplexml/tests/015.phpt | 40 ++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 18 deletions(-) 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--- -- 2.40.0