PHP中的SOAP调用返回int(..), string(..)格式的输出


SOAP call in PHP is returning int(...), string(...) formatted output.

我执行下一个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);函数,输出应该显示带类型的结果。