我执行下一个SOAP调用:
$soapclient = new SoapClient(self::getParameterByKey(self::$WDSL));
$response = $soapclient->getAllProductsAndOffers(array("province_id" => $province_id, "city_id" =>
$city_id, "code" => $code, "favoritos" => $favoritos, "tipo" => $tipo));
我的肥皂接驳得很好。没问题。我得到了结果:
object(stdClass)#10 (1) { ["getAllProductsAndOffersResult"]=> object(stdClass)#9 (3) { ["data"]=> object(stdClass)#8 (1) { ["ProductsOffers"]=> array(3) { [0]=> object(stdClass)#7 (13) { ["bussiness_id"]=> int(1) ["city_id"]=> int(899) ["codigo"]=> string(10) "davidtest1" ["created_date"]=> string(19) "2014-04-30T00:15:05" ["id"]=> int(7) ["img_url"]=> string(0) "" ["latitud"]=> float(41.385589) ["longitud"]=> float(2.168745) ["nombre"]=> string(0) "" ["porcentaje"]=> float(0) ["province_id"]=> int(33) ["tipo"]=> string(1) "P" ["value"]=> float(123) } [1]=> object(stdClass)#6 (13) { ["bussiness_id"]=> int(1) ["city_id"]=> int(899) ["codigo"]=> string(8) "alava-01" ["created_date"]=> string(19) "2014-04-27T01:57:18" ["id"]=> int(5) ["img_url"]=> string(0) "" ["latitud"]=> float(41.385589) ["longitud"]=> float(2.168745) ["nombre"]=> string(0) "" ["porcentaje"]=> float(50) ["province_id"]=> int(33) ["tipo"]=> string(1) "O" ["value"]=> float(500) } [2]=> object(stdClass)#5 (13) { ["bussiness_id"]=> int(1) ["city_id"]=> int(899) ["codigo"]=> string(6) "da-003" ["created_date"]=> string(19) "2014-04-27T01:05:39" ["id"]=> int(4) ["img_url"]=> string(0) "" ["latitud"]=> float(41.385589) ["longitud"]=> float(2.168745) ["nombre"]=> string(0) "" ["porcentaje"]=> float(0) ["province_id"]=> int(33) ["tipo"]=> string(1) "P" ["value"]=> float(2000) } } } ["err"]=> bool(false) ["message"]=> string(2) "ok" } }
将对象转换为数组的结果为:
array(1) { ["getAllProductsAndOffersResult"]=> array(3) { ["data"]=> array(1) { ["ProductsOffers"]=> array(3) { [0]=> array(13) { ["bussiness_id"]=> int(1) ["city_id"]=> int(899) ["codigo"]=> string(10) "davidtest1" ["created_date"]=> string(19) "2014-04-30T00:15:05" ["id"]=> int(7) ["img_url"]=> string(0) "" ["latitud"]=> float(41.385589) ["longitud"]=> float(2.168745) ["nombre"]=> string(0) "" ["porcentaje"]=> float(0) ["province_id"]=> int(33) ["tipo"]=> string(1) "P" ["value"]=> float(123) } [1]=> array(13) { ["bussiness_id"]=> int(1) ["city_id"]=> int(899) ["codigo"]=> string(8) "alava-01" ["created_date"]=> string(19) "2014-04-27T01:57:18" ["id"]=> int(5) ["img_url"]=> string(0) "" ["latitud"]=> float(41.385589) ["longitud"]=> float(2.168745) ["nombre"]=> string(0) "" ["porcentaje"]=> float(50) ["province_id"]=> int(33) ["tipo"]=> string(1) "O" ["value"]=> float(500) } [2]=> array(13) { ["bussiness_id"]=> int(1) ["city_id"]=> int(899) ["codigo"]=> string(6) "da-003" ["created_date"]=> string(19) "2014-04-27T01:05:39" ["id"]=> int(4) ["img_url"]=> string(0) "" ["latitud"]=> float(41.385589) ["longitud"]=> float(2.168745) ["nombre"]=> string(0) "" ["porcentaje"]=> float(0) ["province_id"]=> int(33) ["tipo"]=> string(1) "P" ["value"]=> float(2000) } } } ["err"]=> bool(false) ["message"]=> string(2) "ok" } }
转换我使用我在互联网上找到的下一个函数:
public static function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map("self::" . __FUNCTION__, $d);
}
else {
// Return array
return $d;
}
}
我的问题是为什么我得到所有的数据像float(…),string(…),int(…)?
我可以避免这种情况,我的数组只包含真实的数据没有格式?
我想要这样的信息:
["ProductsOffers"]=> array(3) {
[0]=> array(13) {
["bussiness_id"]=> 1
["city_id"]=> 899
["codigo"]=> "davidtest1"
["created_date"]=> "2014-04-30T00:15:05"
["id"]=> 7
["img_url"]=> ""
["latitud"]=> 41.385589
["longitud"]=> 2.168745
["nombre"]=> ""
["porcentaje"]=> 0
["province_id"]=> 33
["tipo"]=> "P"
["value"]=> 123
}
...
}
NO这是soap调用的返回值:
["ProductsOffers"]=> array(3) {
[0]=> array(13) {
["bussiness_id"]=> int(1)
["city_id"]=> int(899)
["codigo"]=> string(10) "davidtest1"
["created_date"]=> string(19) "2014-04-30T00:15:05"
["id"]=> int(7)
["img_url"]=> string(0) ""
["latitud"]=> float(41.385589)
["longitud"]=> float(2.168745)
["nombre"]=> string(0) ""
["porcentaje"]=> float(0)
["province_id"]=> int(33)
["tipo"]=> string(1) "P"
["value"]=> float(123)
}
...
}
您可以使用var_dump($returnedArray);
函数,输出应该显示带类型的结果。