ID: 41097
Updated by: [EMAIL PROTECTED]
Reported By: r dot korving at xit dot nl
-Status: Assigned
+Status: Closed
Bug Type: SOAP related
Operating System: Debian
PHP Version: 5.2.1
Assigned To: dmitry
New Comment:
Your expectation is wrong because PHP converts numeric string indeces
into integer.
$ sapi/cli/php -r 'var_dump(array("5" => "Foo", "10" => "Bar"));'
array(2) {
[5]=>
string(3) "Foo"
[10]=>
string(3) "Bar"
}
BTW I fixed ext/soap to use Apache:Map instead of SOAP-ENC:Array in
case of partial arrays (missing indeces).
FIXED in CVS HEAD and PHP_5_2.
Previous Comments:
------------------------------------------------------------------------
[2007-04-16 06:59:17] r dot korving at xit dot nl
Description:
------------
Returning array('5' => 'Foo', '10' => 'Bar') from a SoapServer handler
class ends up as array(0 => 'Foo', 1 => 'Bar') at the client end. But
array('a' => 'Foo', 'b' => 'Bar') does end up correctly. It only fails
with numeric keys. I'm not using WSDL in this case. I think integer keys
that are not in a simple 0..n range should end up in an associative
array, not indexed with new 0..n keys.
Reproduce code:
---------------
<?php
class MyHandler
{
public function getData()
{
return array('5' => 'Foo', '10' => 'Bar');
}
}
// initialize soap-server:
$soap = new SoapServer(null, array('uri' => 'http://uri/', 'encoding'
=> 'ISO-8859-1'));
$soap->setClass('MyHandler');
$soap->handle();
?>
Expected result:
----------------
array('5' => 'Foo', '10' => 'Bar')
Actual result:
--------------
array(0 => 'Foo', 1 => 'Bar')
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=41097&edit=1