|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-09-23 21:25 UTC] tater at potatoe dot com
Description:
------------
I guess this is related to the recent toString() stuff -
simplexml_element object properties can't be printed or
assigned, they all come out as 'Object #x'. the string
values turn into empty simplexml_element objects.
Reproduce code:
---------------
<?php
$xml = '<wrapper><foo>s1</foo><bar>s2</bar><bar>s3</bar></wrapper>';
$t = simplexml_load_string($xml);
var_dump($t,$t->foo,$t->bar);
?>
Expected result:
----------------
object(simplexml_element)#1 (2) {
["foo"]=>
string(2) "s1"
["bar"]=>
array(2) {
[0]=>
string(2) "s2"
[1]=>
string(2) "s3"
}
}
string(2) "s1"
array(2) {
[0]=>
string(2) "s2"
[1]=>
string(2) "s3"
}
Actual result:
--------------
object(simplexml_element)#1 (2) {
["foo"]=>
string(2) "s1"
["bar"]=>
array(2) {
[0]=>
string(2) "s2"
[1]=>
string(2) "s3"
}
}
object(simplexml_element)#2 (0) {
}
array(2) {
[0]=>
object(simplexml_element)#3 (0) {
}
[1]=>
object(simplexml_element)#4 (0) {
}
}
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 06:00:01 2025 UTC |
I have been able to produce a similar problem, but I'm not sure if it's exactly the same bug or a variant of this one. -----[ XML Field ]----- <?xml version="1.0" encoding="UTF-8"?> <test> <fields> <myField>a</myField> <myField>b</myField> <myField>c</myField> </fields> </test> -----[ Script ]----- #!/usr/local/bin/php -q <?php $sx = simplexml_load_file("_example.xml"); print_r($sx); for ($i = 0; $i < count($sx->fields->myField); $i++) { $v = $sx->fields->myField[$i]; print "True Value: {$v}\n"; $tmp[] = $v; $tmp2[] = "$v"; } print "Trying to view 'tmp' array:\n\n"; print_r($tmp); print "Trying to view 'tmp2' array:\n\n"; print_r($tmp2); ?> -----[ Output ]----- simplexml_element Object ( [fields] => simplexml_element Object ( [myField] => Array ( [0] => a [1] => b [2] => c ) ) ) True Value: a True Value: b True Value: c Trying to view 'tmp' array: Array ( [0] => simplexml_element Object ( ) [1] => simplexml_element Object ( ) [2] => simplexml_element Object ( ) ) Trying to view 'tmp2' array: Array ( [0] => a [1] => b [2] => c ) -----[ PHP Version Info ]----- PHP 5.0.0b2 (cli) (built: Dec 7 2003 18:04:51) Copyright (c) 1997-2003 The PHP Group Zend Engine v2.0.0-dev, Copyright (c) 1998-2003 Zend Technologies with Turck MMCache v2.4.6, Copyright (c) 2002-2003 TurckSoft, St. Petersburg, by Dmitry Stogov I tried the latest CVS, at the time of this posting, and it would not build because of a mysqli compile problem.This bug was not "bogus" - assignments did not work, nor did printing. There now seems to be some implicit string conversions that fix that. Which is fine, I guess. It's still very odd, at the least, that a property access returns an empty object. Nothing else works like this. If it's intentional, it's a very peculiar and questionable intention. Run this code: <?php $xml = '<wrapper><foo>s1</foo><bar>s2</bar><bar>s3</bar></wrapper>'; $t = simplexml_load_string($xml); $x = new stdClass; $x->foo = 's1'; $x->bar = array('s2','s3'); var_dump($t,$t->foo,$t->bar); var_dump($x,$x->foo,$x->bar); ?> and you really think the results are "fine"?? Whatever. That word, "bogus", is like pissing on the people entering bugs. (Ask a native English speaker what they would think you meant if you called something they did "bogus".) If you'd rather just have a broken product, then why allow bug entries at all?