PHP SoapClient将Array转换为String

时间:2011-07-13 07:56:18

标签: php arrays string soap

另一个SOAP问题 - 我有一个大的多维数组,当使用print_r时回显很好(例如,你可以看到所有的数据)。当我使用

时出现问题
SOAPClient->__soapCall('Function', array('paramaters' => $feedUpload));

这实际上返回一个如下所示的xml :(使用__getLastRequest)

<soap-env:envelope xmlns:ns1="http://www.property24.com/prosol/P24Feed" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:body>
        <ns1:uploadlistings>
            <ns1:feedupload>
                <ns1:version>1</ns1:version>
                <ns1:usertoken>
                    <ns1:token>3c7b39ea-c10b-451f-95bf-5118d84fb089</ns1:token>
                </ns1:usertoken>
                <ns1:command>UPLOAD</ns1:command>
                <ns1:compress>None</ns1:compress>
                <ns1:listings>
                    <ns1:listing>
                        <ns1:listingnumber>361000001</ns1:listingnumber>
                        <ns1:propertycategory>SR</ns1:propertycategory>
                        <ns1:listingdata>Array</ns1:listingdata>
                        <ns1:listingtype>A</ns1:listingtype>
                    </ns1:listing>
                </ns1:listings>    
            </ns1:feedupload>    
        </ns1:uploadlistings>
    </soap-env:body>
</soap-env:envelope>

如您所见,对于ListingData,它返回“Array”。这是数组模式:

Array
(
    [parameters] => Array
        (
            [FeedUpload] => Array
                (
                    [Version] => 1
                    [UserToken] => Array
                        (
                            [Token] => 5ece25e7-77d9-4dbf-8b8f-e047759ab8f4
                        )

                    [Command] => UPLOAD
                    [Compress] => None
                    [Listings] => Array
                        (
                            [Listing] => Array
                                (
                                    [PropertyCategory] => SR
                                    [ListingNumber] => 361000001
                                    [ListingType] => A
                                    [ListingData] => Array
                                        (
                                            [MandateDetails] => Array
                                                (
                                                    [ListingNumber] => 361000001
                                                    [ListingType] => A
                                                    [MandateType] => O
                                                    [ClosedUserGroup] => C
                                                    [MarketCode] => A
                                                    [ListPrice] => 111000
                                                    [OccupationDate] => 
                                                    [OffMarketDate] => 
                                                    [OnMarketSince] => 
                                                    [ExpiryDate] => 2011-07-13T09:56:14Z
                                                    [ListDate] => 2011-07-13T09:51:14Z
                                                    [UpdateDate] => 2011-07-13T09:51:14Z
                                                    [VirtualTourUrl] => 
                                                    [ActualDirections] => 
                                                    [ShowHouseDirection] => 
                                                    [ViewComments] => 
                                                    [InternetComments] => Excellent stand situated on the flood plane with large riverine trees and great mountain views.   The estate is situated along the world renowned Blyde River and is 394 ha in extent with only 154 sites on 4000 square metres.  The estate has an array of plains game such as antelope, giraffe and wildebeest as well as hippo and crocodile.     The riverine flood plain provides great birding opportunities such as the Pels fishing owl. There is a restaurant and clubhouse that serves meals and cocktails and offers  
                                                )

                                            [PropertyDetails] => Array
                                                (
                                                    [PropertyCategory] => SR
                                                    [PropertyType] => SRX
                                                    [Status] => ACTV
                                                    [Province] => Eastern Cape
                                                    [Town] => Aberdeen
                                                    [Suburb] => Balvinie
                                                    [StreetName] => Test Street
                                                    [StreetNumber] => 5
                                                    [PostalCode] => 0123
                                                    [ErfSize] => 1200
                                                    [HouseSize] => 
                                                    [Age] => 
                                                    [OwnerType] => G
                                                    [VATRegistered] => false
                                                    [MunicipalRatesAndTaxes] => 0
                                                    [MunicipalImprovementsValue] => 0
                                                    [MunicipalLandValue] => 0
                                                    [MunicipalTotalValue] => 0
                                                    [StandNumber] => 
                                                    [StandNumberSubdivided] => 
                                                    [PortionNumber] => 
                                                    [OwnerShipType] => 
                                                )

                                            [ResidentialDetails] => Array
                                                (
                                                    [NoOfBathrooms] => 2
                                                    [BathroomDescription] => 
                                                    [NoOfBedrooms] => 6
                                                    [BedroomDescription] => 
                                                    [NoOfKitchens] => 2
                                                    [KitchenDescription] => 
                                                    [NoOfReceptionRooms] => 2
                                                    [ReceptionRoomDescription] => 
                                                    [NoOfStudies] => 1
                                                    [StudiesDescription] => 
                                                    [NoOfDomesticBathrooms] => 2
                                                    [NoOfDomesticRooms] => 0
                                                    [DomesticRoomsDescription] => 
                                                    [NoOfGarages] => 0
                                                    [GarageDescription] => 
                                                    [NoOfOutsideToilets] => 0
                                                    [Coverage] => 0
                                                    [Pool] => false
                                                    [PoolDescription] => 
                                                    [Flatlet] => 
                                                    [FlatletDescription] => 
                                                    [FlatletSize] => 
                                                    [EstablishedGarden] => 
                                                    [OutBuildingSize] => 
                                                    [NoOfCarports] => 0
                                                    [CarportsDescription] => 
                                                    [ParkingBayNumber] => 
                                                    [Parking] => 
                                                    [ParkingDescription] => 
                                                    [BusinessRights] => 
                                                    [HeightRestrictions] => 
                                                    [CommonFeatures] => 
                                                    [NumberOfShares] => 
                                                    [FacingOptions] => 
                                                    [KitchenOptions] => 
                                                    [FeatureOptions] => 
                                                    [SpecialFeatureOptions] => 
                                                    [WallOptions] => 
                                                    [WindowOptions] => 
                                                    [StyleOptions] => 
                                                    [TemperatureControlOptions] => 
                                                    [SecurityOptions] => 
                                                    [RoofOptions] => 
                                                    [RoomOptions] => 
                                                    [PoolOptions] => 
                                                    [BathroomOptions] => 
                                                )

                                            [AgentDetails] => Array
                                                (
                                                    [InternetAgentName] => Ricky Duckworth
                                                    [InternetAgentPhoneNumber] => 0157931534
                                                    [InternetAgentEmailAddress] => ricky@propertylogic.net
                                                    [InternetAgentSMSNumber] => 0796057834
                                                    [ListingAgentCode] => CN21
                                                    [ListingAgencyCode] => CWP021
                                                )
                                        )
                                )
                        )
                )
        )
)

正如您所看到的,阵列结构正常。这就像SoapRequest已经深入到阵列并停止了。我也收到了通知

Notice: Array to string conversion in /var/www/vhosts/propertylogic.net/httpdocs/soap_feed/property24/add_property.php on line 178

这是SOAPCall行。

非常感谢!

修改

[编辑]好的,基本上SOAP服务器请求该部分是原始xml,所以我不得不用一个字符串替换数组 - 一种愚蠢的做事方式,但错误信息现在有意义! (不能回答我自己的问题)。

1 个答案:

答案 0 :(得分:1)

您最好生成并使用WSDL来创建SOAP客户端并在那里定义复杂类型。这样,每种SOAP类型都将以自然的方式转换为PHP类型(在您的示例中,它将是一个对象数组)。

或者您可以像使用字符串一样替换数组,尽管它是一个肮脏的魔法:)