|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2007-06-14 07:27 UTC] dmitry@php.net
[2007-06-14 09:58 UTC] simon at highlyillogical dot org
[2007-06-18 14:57 UTC] dmitry@php.net
[2007-06-26 01:00 UTC] php-bugs at lists dot php dot net
[2007-06-28 08:31 UTC] simon at highlyillogical dot org
[2007-06-28 10:19 UTC] dmitry@php.net
[2007-08-17 08:05 UTC] vrana@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 07:00:01 2025 UTC |
Description: ------------ When the PHP soap client parses a SOAP response that contains multiple recurrences of an <xsd:choice maxOccurs="unbounded"> element, the ordering of elements can be lost, as the results are grouped by element type. For example, take the following complex type: <xsd:complexType name="sentence"> <xsd:choice maxOccurs="unbounded"> <xsd element name="noun" type="xsd:string" /> <xsd element name="verb" type="xsd:string" /> <xsd element name="other" type="xsd:string" /> </xsd:choice> </xsd:type> This type can describe a sentence, with one element per word. An example sentence might be: <sentence> <other>The</other> <noun>cat</noun> <other>is</other> <verb>playing</verb> <other>with</other> <noun>string</noun> </sentence> When PHP parses this, it groups the elements by type. Thus, a sentence which reads "The cat is playing with string", is mangled to read "cat string playing The is with" I've posted a wsdl to demonstrate the problem at: http://zx81.highlyillogical.org/~simon/phpbugtest/phpbugtest.wsdl A valid XML response similar to the case above is at: http://zx81.highlyillogical.org/~simon/phpbugtest/bugtest.xml To reproduce the problem, simply call the bugtest operation on the above wsdl. It will always return the above xml response. Reproduce code: --------------- $client = new SoapClient ( "http://zx81.highlyillogical.org/~simon/phpbugtest/phpbugtest.wsdl" ) ; // we're just hitting an XML file, so we don't care about the input $result = $client->bugtest ( ) ; var_dump ( $result ) ; Expected result: ---------------- An output with the resulting objects are presented in the order in which they occurred in the document. Actual result: -------------- object(stdClass)#2 (3) { ["noun"]=> array(2) { [0]=> string(3) "cat" [1]=> string(6) "string" } ["verb"]=> string(7) "playing" ["other"]=> array(3) { [0]=> string(3) "The" [1]=> string(2) "is" [2]=> string(4) "with" } }