我有一个客户端服务器场景,其中由 PHP 中的 SoapClient 类进行类型转换,无法判断空数组是关联数组还是数字数组,因此默认为数字。
所有公开的函数都使用基本类型,没有类。
关联数组,例如array("something"=>123)
被转换为地图数据类型。但是,当同一个数组为空时,例如array()
,它会在 Ruby 端转换为数组。类型转换为对象(object)array()
将导致 Ruby 端的结构数据类型。
论点稍微复杂一点,不像上面那么简单:
array(
"options"=>array(
"plans"=>array(
0=>array(
"name"=>"abc",
"product_options"=>array(
"optional_key_determines_associative_array_data_type"=>0,
),
),
),
),
);
如果下面的数组"product_options"
为空,它将被转换为 Ruby 中的数组,而不是映射。再一次,在 PHP 中将类型转换为对象会在 Ruby 中生成一个结构。
我可以在 PHP 端做些什么来使空的“关联”数组最终成为 Ruby 端的映射?
PHP 5.3.3,使用 SoapClient。Ruby 1.8.7、Rails 2.3.2 使用 Action Web 服务。