SOAP-вызов в PHP возвращает int (...), строковый (...) отформатированный вывод.

Я делаю следующий вызов 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
 } 
 ...
}

НЕТ ЭТО, что он возвращается для мыльного звонка:

["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 ответ

Вы можете использовать var_dump($*************); функция и вывод должны показать результат с типом.

licensed under cc by-sa 3.0 with attribution.